我正在尝试为我正在从事的项目设置gitlab ci(php -symfony 4/mysql(。我已经创建了.gitlab-ci.ym
L文件,并使用必要的步骤来准备Docker映像。其中一个步骤是运行composer install
-这通常应该安装一堆链接的代码,其中一些来自私人存储库(也存储在GitLab上(。
我正在尝试制定当前的最佳实践,以允许Gitlab CI跑步者从其私人仓库中克隆此代码。我在其他堆栈溢出帖子中看到了${CI_JOB_TOKEN}
变量的参考,但似乎缺少连接信息以使其正常工作 - 例如,我是否需要修改私有存储库以以某种方式部署令牌访问此变量,或这是否会自动发生,因为GitLab正在从其自己的服务器中克隆代码?
是否有人有一个可以使用作曲家从私有回购中克隆代码的.gitlab-ci.yml
文件的完整示例?如果相关,我需要克隆4个私人存储库,并且需要为许多依赖这些基于这些库的项目进行相同的CI设置。
我在阅读此页面几次之后设法解决了此问题-https://docs.gitlab.com/ee/user/project/new_ci_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...
命令(,但现在我得到了一个auth错误:
remote: HTTP Basic: Access denied
fatal: Authentication failed for 'https://xxx.xxxx.xx:4043/xxxx/repo-shared.git/'
我只是不禁注意到错误中缺少gitlab-ci-token:${CI_JOB_TOKEN}@
...