【问题标题】:How to get latest source commit SHA for merge commit in CI/CD如何在 CI/CD 中获取用于合并提交的最新源提交 SHA
【发布时间】:2019-02-23 10:07:57
【问题描述】:

合并后在 gitlab 中有一个新的 SHA 提交。

在 CI/CD 变量中有一个 CI_MERGE_REQUEST_SOURCE_BRANCH_NAME 变量。还有一些方法可以在命令行中了解其他一些提交数据,例如git rev-parse --verify HEAD 等。

那么,如何获取特殊合并提交的源提交 SHA?

为了清楚地理解这个问题,我将尝试描述这个案例。

分支:master、dev

提交:dev_1、dev_2、dev_3、merge_to_master_dev_123、dev_4、dev_5、dev_6、merge_to_master_dev_456

当我运行(或重新运行)merge_to_master_dev_123 的管道时,我需要获取 dev_3 提交 SHA。

当我为 merge_to_master_dev_456 运行(或重新运行)管道时,我需要获取 dev_6 提交 SHA。

我将在 GitLab Runner 的 gitlab-ci.yml 脚本(尤其是 shell 脚本)中使用它。

获取源分支的最新请求不是我想要的,因为我可以在 merge_to_master_dev_456、merge_to_master_dev_... 管道之后重新运行 merge_to_master_dev_123 管道。

那该怎么做呢?

【问题讨论】:

  • 我不太确定你想做什么,比如它是一个实际的合并提交吗?是master合并到dev还是相反?无论哪种方式,这都会对您有所帮助:stackoverflow.com/a/12527561/2115135

标签: gitlab gitlab-ci gitlab-ci-runner


【解决方案1】:

您可以在合并到 master 时将 SHA 保存在提交消息中,然后从 CI_COMMIT_MESSAGE 变量中检索 SHA。

或者更好的是,您可以在合并时在 dev 上标记提交,然后使用标记来引用提交.. 如何使用 beta 预发布标签标记 dev 分支上的提交,例如1.0.0-beta 然后在没有预发布标签 1.0.0 的情况下标记合并提交? 当您重新运行合并提交时,您可以使用CI_COMMIT_TAG 变量来获取 1.0.0,添加 -beta 预发布标签,并且您有一个对您合并的提交的 git 引用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-29
    • 1970-01-01
    • 1970-01-01
    • 2021-09-04
    • 1970-01-01
    • 2013-05-13
    • 1970-01-01
    相关资源
    最近更新 更多