如何获取最新的源提交SHA以在CI / CD中进行合并提交

时间:2019-02-23 10:07:57

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

合并后,gitlab中将使用新SHA进行新提交。

enter image description here

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

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

为了清楚地理解问题,我将尝试描述此情况。

分支机构:开发大师

提交: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 commit SHA。

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

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

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

那怎么办?

1 个答案:

答案 0 :(得分:0)

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

或者更好的是,您可以在合并时在开发上标记提交,然后使用该标签来引用提交。 如何使用beta的预发布标签在dev分支上标记提交,例如1.0.0-beta,然后标记不带预发布标记1.0.0的合并提交? 当您重新运行合并提交时,可以使用CI_COMMIT_TAG变量获取1.0.0,在-beta预发行标签上添加,然后您会从git引用到您从中进行合并的提交。