![](/img/trans.png)
[英]Unable to composer install/require from a private GitLab repo (namespace)
[英]Gitlab CI - composer install on private repo
我正在尝试为我正在处理的项目(PHP - Symfony 4 / MySQL)设置 Gitlab CI。 我已经创建了.gitlab-ci.ym
文件,其中包含准备 Docker 映像的必要步骤。 其中一个步骤是运行composer install
- 这通常应该安装一堆链接代码,其中一些来自私有存储库(也存储在 Gitlab 上)。
我正在尝试找出当前的最佳实践,以允许 Gitlab CI 运行程序从其私有存储库中克隆此代码。 我在其他 Stack Overflow 帖子中看到对${CI_JOB_TOKEN}
变量的${CI_JOB_TOKEN}
,但似乎缺少连接信息以使其工作 - 例如,我是否需要修改私有存储库以访问此变量作为部署令牌不知何故,或者这会自动发生,因为 Gitlab 从它自己的服务器克隆代码?
有没有人有一个完整的.gitlab-ci.yml
文件示例,可以使用.gitlab-ci.yml
从私有.gitlab-ci.yml
中克隆代码? 如果相关,我需要克隆 4 个私有存储库,并且需要为许多依赖于这些基于库的项目设置相同的 CI。
在多次阅读此页面后,我设法解决了这个问题-https: //docs.gitlab.com/ee/user/project/new_ci_build_permissions_model.html
它提到推送代码的用户是运行CI任务的用户。 使用此知识和自动可用的CI_JOB_TOKEN
变量,将以下内容添加到我的before_script
:
git config --global url."https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.com/".insteadOf "git@gitlab.com:"
...然后在我的composer.json
,添加了我要使用的存储库列表(使用"repositories": []
键,因为这使我能够强制它们使用https来检出而不是在本地使用ssh 。
现在,通过这种组合,我可以运行CI任务并从私有存储库中提取代码,而不会出现权限问题-无需部署密钥或令牌。
你们中有人设法弄明白了吗?
我设法让 git 替换了在 composer.json 中设置的 repo 的 url(使用git config --global url...
命令),但现在我收到了一个身份验证错误:
remote: HTTP Basic: Access denied
fatal: Authentication failed for 'https://xxx.xxxx.xx:4043/xxxx/repo-shared.git/'
我不禁注意到错误中缺少gitlab-ci-token:${CI_JOB_TOKEN}@
......知道吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.