m_c*_*ens 3 gitlab gitlab-ci gitlab-ci-runner
在我的设置中,GitLab 中有两个存储库,其中一个有一个版本文件,另一个需要命名由其 CI/CD 管道生成的工件。
现在,我只是克隆整个其他存储库来访问该VERSION文件。我尝试使用git archive仅提取VERSION文件,但CI_JOB_TOKEN不适用于 SSH 访问远程(来自我的测试),并且curl对原始文件路径执行 a操作不起作用,因为它位于私有 GitLab 实例上。
有一个更好的方法吗?
Sam*_*ipp 10
我遇到了同样的问题并通过使用访问令牌解决了它。转到“用户设置” >“访问令牌”并创建一个:
使用它,您可以通过gitlab-api从所有存储库中提取文件。
wget --header "PRIVATE-TOKEN: <your_token>" http://mygitlab.com/api/v4/projects/<project_id>/repository/files/path%2Fto%2Ffile/raw?ref=master
Run Code Online (Sandbox Code Playgroud)
要在 GitLab CI 中提取该文件,您可以将访问令牌设置为环境变量。去>设置> CI >环境变量并添加GITLAB_TOKEN您的访问令牌:
您现在可以在 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
Run Code Online (Sandbox Code Playgroud)
或者
curl --header "PRIVATE-TOKEN: ${GITLAB_TOKEN}" http://mygitlab.com/api/v4/projects/<project_id>/repository/files/path%2Fto%2Ffile/raw?ref=master
Run Code Online (Sandbox Code Playgroud)
我这样做的一种“不太好”的方法是将在我的 GitLab 用户设置中注册的 SSH 密钥放入运行该作业的容器中,这使我可以访问我有权访问的所有存储库。
如果你只需要另一个存储库中的一个文件,我想到的事情(尽管我也不会称其为一个很好的解决方案)是将这个文件保存在 CI 中“其他”存储库中的 GitLab 页面上,然后使用卷曲。
| 归档时间: |
|
| 查看次数: |
6912 次 |
| 最近记录: |