我有一个在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服务器来说这似乎有点费时。是否有更轻量级的方法?
答案 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