簡體   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