我正在尝试为我正在处理的项目(PHP - Symfony 4/MySQL)设置 Gitlab CI。我有 .gitlab-ci.ym
l 使用准备 Docker 镜像的必要步骤创建的文件。其中一个步骤是运行 composer install
- 这通常应该安装一堆链接代码,其中一些来自私有(private)存储库(也存储在 Gitlab 上)。
我正在尝试制定允许 Gitlab CI 运行器从其私有(private)存储库中克隆此代码的当前最佳实践。我在其他 Stack Overflow 帖子中看到了对 ${CI_JOB_TOKEN}
的引用。变量,但似乎缺少连接信息以使其工作 - 例如,我是否需要修改私有(private)存储库以以某种方式访问此变量作为部署 token ,或者这是否会自动发生,因为 Gitlab 正在从中克隆代码自己的服务器?
有没有人有一个 .gitlab-ci.yml
的完整示例?可以使用composer从私有(private)仓库克隆代码的文件?如果相关,我需要克隆 4 个私有(private)存储库,并且需要为依赖这些基于库的许多项目设置相同的 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 来 checkout ,而不是我在本地使用的 ssh。这种组合现在允许我运行 CI 任务并从私有(private)存储库中提取代码,而不会出现权限问题 - 无需部署 key 或 token 。
关于Gitlab CI - Composer 安装在私有(private)仓库上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56795183/