Gitlab CI - Composer 安装在私有(private)仓库上

标签 git symfony composer-php gitlab gitlab-ci

我正在尝试为我正在处理的项目(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/

相关文章:

git - 将提交从一个分支移动到另一个分支

git - 提交时忽略本地文件夹而不对远程进行任何更改

php - Doctrine Query Builder 选择 Count with Case

php - Composer - 不使用自动加载和加载单个类?

Laravel 错误 "Declaration of model/model_name should be compatible with Illuminate\Database\Eloquent\Model"

git - 不允许分支 merge 到另一个分支

git - 如何备份 StGit 工作区?

mysql - 在 Symfony 中根据日期和 count() 获取 mysql 结果

symfony - 您可以在同一实体的不同索引中定义两个或多个类型吗?

php - ubuntu 20.4 Composer 和 laravel by termail 错误