在GCP中,通过Cloudbuild,我如何确保只有那些在文件中发生更改的步骤才会被触发



我的问题是,给定下面的yaml文件,如果我在"dir:process/cbd-bu data"的任何文件中进行更改,Cloud Build在触发时会串行运行所有步骤。这会浪费时间。

我希望只有那个步骤在cloudbuild中运行,对该目录的文件进行了更改。我该怎么做才能做到这一点?

这是我的cloudbuild.yaml文件:

steps: 
- args: 
- beta
- functions
- deploy
- "--runtime=python37"
- "--trigger-http"
- "--entry-point=process_cbd_group_data"
- process_cbd_group_data
- "--region=us-central1"
dir: process/cbd-group-data
name: gcr.io/cloud-builders/gcloud
- args: 
- beta
- functions
- deploy
- "--runtime=python37"
- "--trigger-http"
- "--entry-point=process_cbd_bu_data"
- process_cbd_bu_data
- "--region=us-central1"
dir: process/cbd-bu-data
name: gcr.io/cloud-builders/gcloud
- args: 
- beta
- functions
- deploy
- "--runtime=python37"
- "--trigger-http"
- "--entry-point=process_cbd_structure_data"
- process_cbd_structure_data
- "--region=us-central1"
dir: process/cbd-structure-data
name: gcr.io/cloud-builders/gcloud  

您不能在一个cloudbuild中执行此操作。您可以使用--included files选项创建三个不同的构建触发器。我认为用分支或标签完成与我在另一个答案中读到的相同的事情是不方便的。有关更多详细信息,请阅读文档。

您的git存储库布局:

function_one/
main.py
cloudbuild.yaml
function_two/
main.py
cloudbuild.yaml
function_three/
main.py
cloudbuild.yaml
cloudbuild.yaml

父cloudbuild.yaml:的布局

steps:
- name: 'gcr.io/cloud-builders/gcloud'
entrypoint: 'bash'
args:
- '-c'
- |
cloud beta builds triggers create github build_one --included-files "function_one/*" --repo-name=XXX --repo-owner=XXX --branch-pattern=$BRANCH_NAME
cloud beta builds triggers create github build_two --included-files "function_two/*" --repo-name=XXX --repo-owner=XXX --branch-pattern=$BRANCH_NAME
cloud beta builds triggers create github build_three --included-files "function_three/*" --repo-name=XXX --repo-owner=XXX --branch-pattern=$BRANCH_NAME

亚云构建的布局。yaml:

steps: 
- args: 
- functions
- deploy
- "--runtime=python37"
- "--trigger-http"
- "--entry-point=process_cbd_group_data"
- process_cbd_group_data
- "--region=us-central1"
name: gcr.io/cloud-builders/gcloud

对于您的用例,最好的方法是使用不同的触发器(在您的用例中为3个(来侦听不同的标记或分支,每个触发器都特定于您想要侦听的文件更改。目前,当某个文件更改不可用时,执行云构建步骤。

如果您想使用gcloud CLI

gcloud beta builds triggers create cloud-source-repositories 
--repo=REPO_NAME 
--branch-pattern=BRANCH_PATTERN  # or --tag-pattern=TAG_PATTERN
--build-config=BUILD_CONFIG_FILE 
--substitutions=_VARIABLE="VALUE" 
--included-files "DIRECTORY_NAME/**"

注意:-
-包含的文件"directory_ name/**";将递归地检测所有目录和文件
-包含的文件"directory_ name/*";将只查找该特定目录中的文件。

示例:-

gcloud beta builds triggers create cloud-source-repositories 
--repo=test-repo 
--branch-pattern=master 
--build-config=workflows/cloudbuild.yaml 
--substitutions=_REGION="asia-southeast1"
--included-files "src/**"

相关内容

  • 没有找到相关文章

最新更新