部署.Net AppEngine

时间:2017-07-03 14:54:04

标签: .net google-app-engine google-cloud-platform appveyor

我有一个在Google Cloud Platform中运行的.Net AppEngine应用程序,我可以使用自己的凭据从命令行部署它。我现在想从我的Appveyor CI管道部署它。我已加密服务帐户json文件,并希望在我的部署脚本中使用它。天真地,我在appveyor.yml的deploy_script部分尝试了以下脚本:

    dotnet publish -c Release

    gcloud auth activate-service-account xxx@appspot.gserviceaccount.com --key-file="xxx.json"

    gcloud beta app deploy src/kinetics.webapi/bin/Release/netcoreapp1.1/publish/app.yaml

Appveyor不知道Google SDK,因为我收到了错误

  

gcloud auth activate-service-account xxx@appspot.gserviceaccount.com --key-file =" xxx.json"   ' gcloud'不被视为内部或外部命令,   可操作程序或批处理文件。

如何在Appveyor中使用gcloud?我想我可以使用Nuget安装整个Google SDK,但对于CI服务器来说这似乎有点费时。是否有更轻量级的方法?

2 个答案:

答案 0 :(得分:1)

Chocolatey Google Cloud SDK installation在AppVeyor VM上大约需要1分钟。您需要在choco install gcloudsdk阶段添加install才能使其正常运行。

答案 1 :(得分:0)

根据ilyaf的建议,我使用Chocolatey安装了Google Cloud SDK。它确实有效,并且AppEngine部署需要很长时间才能在AppVeyor中做到这一点。请注意,运行gcloud还需要几个步骤:刷新以获取环境变量并使用python以非交互模式运行。对于任何感兴趣的人,以下安装部分正确安装了该工具:

install:
  - nuget install secure-file -ExcludeVersion
  - choco install gcloudsdk
  - refreshenv
  - gcloud.cmd components copy-bundled-python>>python_path.txt && SET /p CLOUDSDK_PYTHON=<python_path.txt && DEL python_path.txt
  - gcloud.cmd components update --quiet
  - gcloud.cmd components install beta --quiet
  - secure-file\tools\secure-file -decrypt "xxx.json.enc" -secret %gcp_app_engine_service_account%
deploy_script:
- cmd: >-

    dotnet publish -c Release

    gcloud config set project xxx

    gcloud auth activate-service-account xxx@appspot.gserviceaccount.com --key-file="xxx.json"

    gcloud beta app deploy src/kinetics.webapi/bin/Release/netcoreapp1.1/publish/app.yaml --quiet