4

我正在尝试建立一个 Google Cloud Builder Build Trigger 来自动构建我的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']

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

4

2 回答 2

13

解决方案是更新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. 源的当前目录
于 2018-10-11T11:30:12.540 回答
0

我正在使用带有 App Engine 和目录结构的 Spring Boot 开发一个示例项目。

google-cloud
      - appengine-spring-boot
      - appflexengine-spring-boot

下面是对我有用的cloudbuild.yaml文件。

steps:
  - name: 'gcr.io/cloud-builders/mvn'
    dir: "appengine-spring-boot"
    #args: [ 'package','-f','pom.xml','-Dmaven.test.skip=true' ]
    args: [ 'clean', 'package']
  - name: "gcr.io/cloud-builders/gcloud"
    dir: "appengine-spring-boot"
    args: [ "app", "deploy" ]
    timeout: "1600s"
于 2021-10-06T10:52:52.190 回答