在GCP中,通过Cloudbuild如何确保仅触发文件中发生更改的那些步骤

2024-03-16

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

我希望只有该步骤在 cloudbuild 中运行,并在该目录的文件中进行了更改。我应该怎么做才能实现这个目标?

这是我的cloudbuild.yaml file:

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  

您无法通过一个云构建来完成此操作。您可以做的是使用 --included-files 选项创建三个不同的构建触发器。我认为用分支或标签完成同样的事情并不方便,正如我在其他答案中读到的那样。阅读文档 https://cloud.google.com/cloud-build/docs/automating-builds/create-manage-triggers更多细节。

你的 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

子cloudbuild.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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在GCP中,通过Cloudbuild如何确保仅触发文件中发生更改的那些步骤 的相关文章

随机推荐

  • 如何使用 javascript/jquery 将 3 个画布 HTML 元素合并到 1 个图像文件中? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我有 3 个画布 即 canvasTarget canvasTarget2 canvasTarget3 如下所示 var canvas do
  • AJAX 到 Web 方法不返回 JSON

    我正在使用 AJAX 从我的 js 文件调用 aspx 页面中的 Web 方法 我已将方法设置为 WebMethod 并且该页面继承自System Web Ui Page 类 它仍然没有将 JSON 格式返回给我调用的 ajax 函数 这是
  • vim:在 vim-gnome 中使用 ctrl-Q 进行可视块模式

    我在 windows 和 linux 上使用 vim 在Linux上 我想将ctrl Q设置为可视块选择 但仍然保持将ctrl v设置为粘贴的mswin行为 如何保持 mswin 的行为并使用 ctrl Q 进行视觉块模式 编辑 我虽然 m
  • 如何使用 SqlDataReader 获取列的 DataType 和 Size?

    我正在尝试获取每列的数据类型以进行一些验证 我已经尝试过getSchemaTable但它只给了我没有值的表的模式 例如 我的数据库中有一个表和一个列名 id declarant 我想从中检索值的数据类型和大小id declarant 这是代
  • Microsoft Edge 中内容脚本和后台脚本之间的通信

    我的沟通有问题browser runtime connect在我的测试回声扩展的内容脚本和后台脚本之间 我已经发布了我的代码和扩展包github https github com alexeysidorov92 edge echo exte
  • 如何实际检测 musl libc?

    musl 团队声称不需要检测 musl libc 的方法 因为它们只实现标准功能并且没有需要检测的怪癖 直到今天 这种说法很可能是正确的 但现在已经不再正确了 正常的功能检测不起作用 因为该功能存在但已损坏 我宁愿不探测它 因为我不想在编译
  • 如何捕获C++正则表达式中的0-2组并打印它们?

    Edit 3 当我陷入正则表达式困境时 我采用了 good ol 自定义解析方法 事实证明这并没有那么糟糕 因为文件内容可以非常整齐地标记 并且可以使用以下命令在循环中解析标记very简单的状态机 对于那些想要检查的人 在我在 Stacko
  • DataGridComboBoxColumn 不更新模型 WPF

    我在 WPF 和 DataGridComboBoxColumn 中使用 Datagrid 请找到下面的代码
  • Android 中密码字段的正则表达式

    我如何验证EditText with Regex通过允许特定字符 我的条件是 密码规则 一个大写字母 一个号码 一个符号 任何可以接受的正常符号 我可以知道实现我的目标的正确方法是什么吗 试试这个可能有帮助 0 9 a z A Z S 4
  • ko.mapping 创建函数,扩展对象

    是否可以在映射过程中修改对象的模式 由于缺乏更好的术语 我想是的 我似乎无法让它发挥作用 我正在尝试这样的事情 var data itemOne someData itemTwo moreData var mapping newItem c
  • 结果显示为空

    我有一个Customer创建的 JSON 对象的值如下 Title Mr FirstName S LastName J Birthday 01 01 2011 Address Line1 Line1 Line2 Line2 City Cit
  • PHP 搜索数组列进行匹配

    我有一个如下所示的数组 其中有多个列 我想在第一列中搜索特定值 并返回匹配的行 这可能吗 例如 Array 0 gt Array id gt 1 column2 gt value2 column3 gt value3 column4 gt
  • 如何在react中使用axios删除单个项目

    我查看了很多文章和帖子 例如this https stackoverflow com questions 26806084 delete a comment react js但它在我的情况下不起作用 我只需要使用 axios 从我的应用程序
  • 在模板中使用导出关键字

    据我了解 可以使用 export 关键字 以便可以通过头文件公开模板类或函数签名 并抽象库文件中的实际实现 谁能提供一个实用的示例程序来说明如何做到这一点 使用时有什么缺点或需要注意的地方吗 编辑 基于答案的后续问题 正如答案中提到的 导出
  • 在 git bash 中找不到 wget 命令

    我已经在我的cmd中尝试过 pip install wget 它显示 gt pip install wget Requirement already satisfied wget in c users user python python3
  • angular2 添加两个数字视图侧

    我希望能够添加两个文本框中的数字 template h1 Adding inputBox Numbers h1 p Num1 p
  • 如何在测试中设置或模拟元素scrollHeight和元素clientHeight?

    我有一个 javascript 函数来检查 html 元素 el 是通过检查确定的大小 function isOverflow element string boolean const el document getElementById
  • PaintComponent 中的图像仅在调整窗口大小后才会显示

    我想用paintComponent Graphics g 使用 for 循环绘制一些图像 但是 JFrame 仅显示为白色屏幕 并且在我调整窗口大小后仅显示黑色背景和图像 import java awt import java awt ev
  • Robolectric:setupActivity() 中的 NullPointerException

    我尝试使用 Robolectric 来测试我的活动 但在尝试使用 Robolectric 设置活动时 我总是收到 NPE 我已按照指南进行操作robolectric org http robolectric org网站 这是我的代码 Con
  • 在GCP中,通过Cloudbuild如何确保仅触发文件中发生更改的那些步骤

    我的问题是 给定下面的 yaml 文件 如果我在 dir process cbd bu data 的任何文件中进行更改 Cloud Build 会在触发时串行运行所有步骤 这会导致时间的浪费 我希望只有该步骤在 cloudbuild 中运行