GitLab如何获取CI流水线执行时include引入的.yml文件对应commit
问题结论
是可以获取到本次引入的template.yml对应的具体commit哈希的,两种实现方案如下:
方案1(推荐,适用于GitLab 15.3及以上版本)
GitLab官方在15.3版本新增了预定义CI变量CI_INCLUDED_FILES,该变量为JSON格式,存储了当前流水线所有通过include引入的文件的完整元信息,其中就包含每个引入文件对应的commit_sha字段,你可以直接在流水线的任意任务中解析该变量获取对应的commit哈希。
你可以直接在任务中打印变量查看完整结构:echo $CI_INCLUDED_FILES方案2(兼容低版本GitLab)
如果你使用的GitLab版本低于15.3,可以在流水线中新增一个执行任务,手动拉取对应仓库指定分支的HEAD commit哈希即可:- 先为你的CI配置test_repository仓库的只读访问权限(可以通过部署令牌或者CI变量存储仓库访问令牌实现)
- 在任务中执行以下命令获取对应分支的最新commit哈希:
git ls-remote https://<你的GitLab实例域名>/test_repository.git develop | awk '{print $1}'注意:该方案存在极小概率偏差,如果在流水线触发后到执行该命令的间隙,有人向develop分支提交了新的commit,查询到的哈希会和实际引入的template版本不一致,优先选择方案1
内容的提问来源于stack exchange,提问作者Serhiy
相关产品推荐
相关产品推荐

