在GitLab CI脚本中克隆另一个GitLab存储库

问题描述 投票:-1回答:2

我已经看到了这个:`git clone project2` in gitlab-ci.yml?以及一些类似的帖子,类似的答案暗示一个人应该使用Git子模块。

关于Git中的子模块是否运行良好的问题,在我的情况下,根本不是一个选项(要检查的其他项目取决于传递给作业触发器的参数,或者至少是它,应该)。

另一个要求是我需要能够跟踪启动触发链的用户。即硬编码我的个人令牌,或者只是任何令牌都不会这样做:我需要GitLab来使用执行该作业的用户的权限来克隆其他存储库。

没有放弃GitLab并寻找成熟的CI替代方案,有没有办法完成这项工作?

gitlab
2个回答
2
投票

正如New CI job permissions model所述,有两种选择:使用gitlab-ci-token:${CI_JOB_TOKEN}或将其写入~/.netrc(对我不起作用)。

但是我们在package.json中定义了多个依赖的存储库,所以我们的解决方案是覆盖git config

git config --global url."https://gitlab-ci-token:${CI_JOB_TOKEN}@your-gitlab.com/".insteadOf "ssh://[email protected]/"

0
投票

这应该可以使用gitlab-ci-token变量来记录here

git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.com/myuser/mydependentrepo

这个issue讨论了gitlab-ci-token的权限,并在提案中还提到:

  1. 我们将通过从运行此构建的人的Ci :: Build信息获取对资源的访问权限,它可以是:推送git push,重试构建的人,合并了更改的人
© www.soinside.com 2019 - 2024. All rights reserved.