在開發 php 程式會使用 composer 來安裝套件,開源的 package 會發佈在 packagist.org 上,不過公司商業用途或是私人的則不會放在這,可以選擇使用 VCS 方式或是架設私人的 packagist,但是如果選擇 VCS 就需要在所有安裝到該 package 的每個 repo 寫上 VCS 設定 (包括間接安裝),而架設 packagist 則是需要額外管理的成本,現在 GitLab 已提供多個語言的 Package Registry,其中包括了 PHP 的 composser,本篇將教學如何創建 GitLab 私人 Composer Package Registry。
建立 Group
Package Registry 會是管理在 Group 中,首先在 GitLab 中建立一個 Group
在 Group 下建立要放到 registery 的 project
接著到 Group 下建立一個要放到 Registery 的 project
並且把自己相關程式碼與 composer.json 推上去 (以下為範例)
composer.json 內容:
{ "name": "xenby/library-a", "require": { "illuminate/database": "^8.6" }, "autoload": { "psr-4": { "Xenby\\LibraryA\\": "src" } } }
建立 Publish 用的 Personal Access Tokens 與 CI
接著到 Personal Acess Tokens 頁面 (https://gitlab.com/profile/personal_access_tokens) 建立提供 CI 使用的 token
建立完成後會取得 access token
※ 注意:這時需要把 token 複製下來 (頁面關閉後無法再看見,需要重新建立)
接著到專案的 CI/ CD 設定頁
到 Variables 中點 [Add Variable]
把剛剛的複製的 token 貼上去,變數名稱設定為 DEPLOY_TOKEN
並且勾選下方的 Mask variable
(避免這個 token 被紀錄在 log 中)
接著在專案的 .gitlab-ci.yml
中加上 deploy_composer 的步驟
這樣就可以在 repo 被打上 tag 時候也自動註冊在 Composer Registry 中
image: php:7.3 deploy_composer: only: - tags stage: test script: - curl -sS --show-error --fail --data tag=${CI_COMMIT_TAG} "https://__token__:${DEPLOY_TOKEN}@gitlab.com/api/v4/projects/${CI_PROJECT_ID}/packages/composer"
下一篇將教學如何讓 composer 能夠存取該 package registry : [教學] composer 如何使用 Gitlab 上的私人 Registry
您好,對於 .gitlab-ci.yml 的部分要如何設定才會啟動呢?
只要將 .gitlab-ci.yml 放到專案根目錄推上去就會自動執行了