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

时间:2018-10-09 15:59:07

标签: google-cloud-platform google-cloud-build

我正在尝试建立Google Cloud Builder构建触发器,以自动构建ASP .NET Core application并将其部署到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']

我已经使用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在存储库的子目录中启动构建?

1 个答案:

答案 0 :(得分:4)

解决方案是更新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']

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

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

这反映了Cloud Build的工作方式:

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