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

时间:2018-11-20 10:42:30

标签: gitlab

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

在我的案例中,没有涉及Git中子模块是否工作良好的争论,这根本不是一个选择(要检查的其他项目取决于传递给作业触发器的参数,或者至少应该如此。)

另一个要求是,我需要能够跟踪启动触发器链的用户。即对我的个人令牌进行硬编码,或者仅仅是任何令牌都无法做到:我需要GitLab来使用执行作业的用户的权限才能克隆其他存储库。

放弃GitLab并寻找成熟的CI替代品,有什么方法可以做到这一点?

2 个答案:

答案 0 :(得分:1)

New CI job permissions model指出有2个选项:使用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://git@your-gitlab.com/"

答案 1 :(得分:0)

使用here中记载的gitlab-ci-token变量应该可以实现:

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

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

  
      
  1. 我们将通过从Ci :: Build获得有关运行此构建的人员的信息来授权对资源的访问,它可能是:   git push,重试构建的人,合并变更的人
  2.