github - 合并时如何在推送时从谷歌云构建触发器获取源分支

标签 github google-cloud-platform continuous-deployment google-cloud-build

我正在从 github 拉取请求中将“feature-branch”合并到“dev-branch”。我正在使用在推送到“dev-branch”时触发的谷歌云构建触发器。从我在 documentation of substitution variables 中可以看出,没有替代变量来获取我正在合并的分支的名称 - 'feature-branch',只有我合并到的分支 - 'dev-branch'。有没有一种方法或解决方法可以从推送到分支事件中获取正在从谷歌云构建触发器上合并的分支的信息(名称、sha、id 等)?

最佳答案

大概你可以在提交消息的第一行有一些命名约定(发生在 merge pull request “event”),这样这一行就包含了源代码(或 head) 分支名称(合并的来源 - 用你的话来说 - 'feature-branch')。

然后,您可以创建一个替换变量:

substitutions:
  _COMMIT_MESSAGE: $(commit.commit.message)

这是文档链接:Creating substitutions using payload bindings

并在某些构建步骤中使用该变量来获取 head 分支名称:

    mapfile -t commit_lines <<< "${_COMMIT_MESSAGE}"
    source_branch="$(echo ${commit_lines[0]} | <<add your command here following naming convention for the commit message>> )"
    echo "=> My source branch name: ${source_branch}"

之后您可以使用源分支名称。

关于github - 合并时如何在推送时从谷歌云构建触发器获取源分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71527668/

相关文章:

javascript - 来自 github 的 npm 包,缺少文件

github - Readme.md 文件中的 Github 上未显示图像

git - 无需配置信息即可推送 Laravel 应用程序

javascript - 用于版本控制的 Google Apps 脚本和源代码工具?

google-cloud-datastore - 如何在 Google Cloud Functions 中获取当前的 projectId?

docker - 通过 Gitlab CI/CD 将 docker 服务部署到自己的服务器的正确方法

amazon-web-services - 为安装在 AWS EC2 上的 Jenkins 设置 GitHub Webhook

CI/CD 和部署的 Docker 实践

git - 如何让 TeamCity 自动将 Git 功能分支与 master merge ,并在发生 merge 冲突时使构建失败?

c# - 如何连续监听 ASP.NET Core 应用程序中的 Pub/Sub 消息?