Google Cloud Builder-如何在子目录中触发构建配置?

Per*_*gil 1 google-cloud-platform google-cloud-build

我正在尝试建立Google Cloud Builder构建触发器,以自动构建ASP.NET Core应用并将其部署到Google AppEngine。

使用当前的cloudbuild.yaml

   steps:
   - name: 'gcr.io/cloud-builders/dotnet'
     args: [ 'publish', '-c', 'Release' ]

   - name: 'gcr.io/cloud-builders/gcloud'
     args: ['app','deploy','./bin/Release/netcoreapp2.1/publish/app.yaml']
Run Code Online (Sandbox Code Playgroud)

我已经使用cloud-build-local工具测试了本地构建工作。

这两种方法在本地有效:

  1. 应用程序子目录cloud-build-local --config=cloudbuild.yaml --dryrun=false .
  2. 存储库根目录cloud-build-local --config=clearbooks-rest-aspnetcore/cloudbuild.yaml --dryrun=false clearbooks-rest-aspnetcore

构建触发器定义似乎部分支持来自存储库根目录(方法2)的子目录中的配置文件,但是似乎假设代码始终位于存储库根目录中。

如何配置Cloud Builder在存储库的子目录中启动构建?

Per*_*gil 6

解决方法是更新cloudbuild.yaml

  1. dir:在构建步骤中添加选项
  2. 提供正确app.yaml的部署步骤位置

这是工作中的cloudbuild.yaml:

steps:
- name: 'gcr.io/cloud-builders/dotnet'
  args: [ 'publish', '-c', 'Release' ]
  dir: 'clearbooks-rest-aspnetcore'

- name: 'gcr.io/cloud-builders/gcloud'
  args: ['app','deploy','clearbooks-rest-aspnetcore/bin/Release/netcoreapp2.1/publish/app.yaml']
Run Code Online (Sandbox Code Playgroud)

在本地测试时,请cloud-build-local在存储库根目录上运行,而不要在app子目录上运行:

cloud-build-local --config=clearbooks-rest-aspnetcore/cloudbuild.yaml --dryrun=false .

这反映了云构建的工作方式:

  1. 正确的cloudbuild.yaml路径
  2. 当前源目录