Google Cloud Builder - 如何触发子目录中的构建配置?
Google Cloud Builder - how to trigger build configuration in a subdirectory?
我正在尝试建立一个 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
工具测试了本地构建工作。
这两种方法在本地有效:
- 来自应用程序子目录:
cloud-build-local --config=cloudbuild.yaml --dryrun=false .
- 来自 存储库根目录:
cloud-build-local --config=clearbooks-rest-aspnetcore/cloudbuild.yaml --dryrun=false clearbooks-rest-aspnetcore
Build Trigger 定义似乎部分支持存储库根目录的子目录中的配置文件(方法 2),但它似乎假定代码始终存在于存储库根目录中。
如何配置 Cloud Builder 以在存储库的子目录中开始构建?
解决办法是更新cloudbuild.yaml
:
- 在构建步骤中添加
dir:
选项
- 为部署步骤
提供正确的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
在存储库根目录中,从不在应用程序子目录中:
cloud-build-local --config=clearbooks-rest-aspnetcore/cloudbuild.yaml --dryrun=false .
这反映了 Cloud Build 的工作方式:
- 修正路径cloudbuild.yaml
- 源的当前目录
我正在开发一个示例项目 Spring 使用 App Engine 启动,目录结构是这样的。
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"
我正在尝试建立一个 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
工具测试了本地构建工作。
这两种方法在本地有效:
- 来自应用程序子目录:
cloud-build-local --config=cloudbuild.yaml --dryrun=false .
- 来自 存储库根目录:
cloud-build-local --config=clearbooks-rest-aspnetcore/cloudbuild.yaml --dryrun=false clearbooks-rest-aspnetcore
Build Trigger 定义似乎部分支持存储库根目录的子目录中的配置文件(方法 2),但它似乎假定代码始终存在于存储库根目录中。
如何配置 Cloud Builder 以在存储库的子目录中开始构建?
解决办法是更新cloudbuild.yaml
:
- 在构建步骤中添加
dir:
选项 - 为部署步骤 提供正确的
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
在存储库根目录中,从不在应用程序子目录中:
cloud-build-local --config=clearbooks-rest-aspnetcore/cloudbuild.yaml --dryrun=false .
这反映了 Cloud Build 的工作方式:
- 修正路径cloudbuild.yaml
- 源的当前目录
我正在开发一个示例项目 Spring 使用 App Engine 启动,目录结构是这样的。
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"