我正在尝试为我正在处理的项目(PHP-Symfony 4 / MySQL)设置Gitlab CI。我已经创建了.gitlab-ci.ym
l文件,其中包含准备Docker映像的必要步骤。步骤之一是运行composer install
-通常应安装一堆链接代码,其中一些来自私有存储库(也存储在Gitlab上)。
我正在尝试制定当前的最佳实践,以允许Gitlab CI运行程序从其私有存储库中克隆此代码。我在其他Stack Overflow帖子中看到了对${CI_JOB_TOKEN}
变量的引用,但似乎缺少信息的连接位才能使其正常工作-例如,我是否需要修改私有存储库才能在部署时访问此变量令牌,还是因为Gitlab从其自己的服务器克隆代码而自动发生?
是否有人拥有.gitlab-ci.yml
文件的完整示例,可以使用作曲家从私有存储库中克隆代码?如果需要的话,我需要克隆4个私有存储库,并且对于依赖这些基于库的许多项目,都需要具有相同的CI设置。
答案 0 :(得分:1)
再读了几次后,我设法解决了这个问题-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任务并从私有存储库中提取代码,而不会出现权限问题-无需部署密钥或令牌。