繁体   English   中英

Gitlab CI - 在私有仓库上安装作曲家

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM