GitLab CI从其他存储库读取文件

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

在我的设置中,GitLab中有两个存储库,其中一个存储库具有一个版本文件,另一个存储库需要用于命名由其CI / CD管道生成的工件。

现在,我只是克隆整个其他存储库来访问该VERSION文件。我尝试使用git archive只提取VERSION文件,但CI_JOB_TOKEN不能与SSH访问遥控器(从我的测试),并执行curl到原始文件路径不起作用,因为它在私人GitLab实例上。

有一个更好的方法吗?

gitlab gitlab-ci gitlab-ci-runner
2个回答
0
投票

我做的“不太好”的方法是在我的GitLab用户设置中注册SSH密钥,在运行该作业的容器中,这使我可以访问我有权使用的所有repos。

如果你只需要一个来自其他repo事物的文件(虽然我不会称之为一个很好的解决方案)是将这个文件保存在CI中的“其他”仓库中的GitLab页面上然后只是卷曲。


0
投票

我有同样的问题,并通过使用访问令牌解决它。转到用户设置>访问令牌并创建一个:

Generate access token

然后使用它可以通过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

add ci environment variable

您现在可以在CI脚本中使用该环境变量,如果您愿意,可以使用wgetcurl下载该文件。

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
© www.soinside.com 2019 - 2024. All rights reserved.