讓 composer 使用位在 Gitlab 的 private package
之前發現兩個自己維護的網站有重複的 code
想說提出成 package 來重複利用
不過由於都不是 open source 的網站,所以 package 先弄成 private
這導致 composer 設定上比較麻煩
雖然最後看起來很簡單,但這是經過不少錯誤的嘗試才成功
這邊寫個文章記錄下來
目標
假設有一個放在 Gitlab 的 private repository
名稱是:danny50610/website-core
最少設有一個 tag (假設是:0.1
)
希望使用 Deploy Keys
存取
目標是想讓 danny50610/mywebsite
使用 danny50610/website-core
讓開發人員用的電腦、CI 和 Server 都能使用
Deploy Keys
首先,由於 danny50610/website-core
是 private repository
要先新增 Deploy Keys
,每一台要使用的電腦都要建立,並新增 public key 到 Gitlab 上
這邊不列出指令,可以參考 Gitlab 的教學
composer require
在 danny50610/mywebsite
的 composer.json
加上
{
//...
"repositories": [
{
"type": "git",
"url": "git@gitlab.com:danny50610/website-core.git"
}
],
//...
}
type
請使用 git
,不要用 vcs
、gitlab
,這樣 composer
才會使用 ssh
url
是 repository 的 clone url (ssh)
接著執行,就大功告成:
composer require danny50610/website-core
備註
如果之前有錯誤的嘗試,先移除先前的設定,並把 composer.json
和 composer.lock
回復成原本的樣子
因為自己遇到 composer install
突然要求輸入 Gitlab 的 password
後來發現是 composer.lock
的 danny50610/website-core
不小心讓他存到 https 的下載地址
先 composer remove danny50610/website-core
再 composer require danny50610/website-core
就沒問題了