在我拥有的设置中,GitLab中有两个存储库,其中一个具有版本文件,另一个需要命名其CI / CD管道产生的工件。
现在,我只是克隆整个其他存储库以访问该VERSION
文件。我尝试使用git archive
仅提取VERSION
文件,但CI_JOB_TOKEN
不适用于SSH访问遥控器(根据我的测试),并对原始文件执行了curl
文件路径不起作用,因为它在私有的GitLab实例上。
有更好的方法吗?
答案 0 :(得分:0)
一种“不太好”的方式是在运行作业的容器中将已注册的GitLab用户设置SSH密钥放入运行该作业的容器中,从而使我能够访问所有我有权访问的存储库。
如果您只需要想到另一个仓库中的一个文件(尽管我也不会说这是一个很好的解决方案),请将此文件保存在CI中“其他”仓库中的GitLab页面上,然后使其卷曲。
答案 1 :(得分:0)
我遇到了同样的问题,并通过使用访问令牌解决了它。转到用户设置> 访问令牌并创建一个:
然后您可以通过gitlab-api从所有存储库中提取文件。
wget --header "PRIVATE-TOKEN: <your_token>" http://mygitlab.com/api/v4/projects/<project_id>/repository/files/path%2Fto%2Ffile/raw?ref=master
要在GitLab CI中提取该文件,可以将访问令牌设置为环境变量。转到 > 设置> CI > 环境变量,并添加GITLAB_TOKEN
和访问令牌:< / p>
现在,您可以根据需要在CI脚本中使用该环境变量来通过wget
或curl
下载该文件。
wget --header "PRIVATE-TOKEN: ${GITLAB_TOKEN}" http://mygitlab.com/api/v4/projects/<project_id>/repository/files/path%2Fto%2Ffile/raw?ref=master
或
curl --header "PRIVATE-TOKEN: ${GITLAB_TOKEN}" http://mygitlab.com/api/v4/projects/<project_id>/repository/files/path%2Fto%2Ffile/raw?ref=master