composer如何自動驗證並獲取gitlab的私有庫?


    近期購買了Laravel的nova以后,需要對它的核心代碼做一些修改,為方便與團隊其他成員分享,以及在nova官方庫更新后方便對差異管理。便將nova庫掛在自己的gitlab,通過composer直接引用。
    gitlab上全是私有庫,composer獲取需要認證,在本地測試時輸入用戶名/密碼過認證倒不打緊,生產服務器上布署就有問題了,由於是自動布署,必須是全自動才行。經過一番折騰,composer可以通過配置gitlab的Private Token完成驗證,獲取到私有庫,不用再輸用戶名密碼。
    為方便描述操作過程。這里以官方包laravel/nova為例,我將laravel/nova放到自已的gitlab上,路徑為 https://git.papamk.com/xxx/nova,並設置為私有庫。我們的目標是composer可以直接獲取該包而不用輸入密碼。
配置過程
1. 生成Private Token
  在gitlab上,在`User Settings`中找到`Access Tokens`,見下圖:
    ⚠️⚠️⚠️:生成的token只顯示一次,記得保存下來,后面要用到。 
gitlab操作圖
2.配置composer的認證信息
  編輯~/.composer/auth.json(如果沒有該文件,就直接創建) 
 1 {
 2     "bitbucket-oauth": {},
 3     "github-oauth": {},
 4     "gitlab-oauth": {
 5     },
 6     "gitlab-token": {
 7       "git.papamk.com": "<你的Private Token>"
 8     },
 9     "http-basic": {},
10     "gitlab-domains":["git.papamk.com"]
11 }

注意點:
  • 除非你使用的是gitlab.com,否則你應該將gitlab的域名添加到gitlab-domains中; 

3. 編輯 composer.json

{
    // ...省略其他部分
    "repositories": [
      {
        "type": "gitlab",
        "url": "https://git.papamk.com/xxx/nova"
      }
    ],
    "require": {
        // ...省略其他包
        "laravel/nova": "dev-master",
    }
} 
  重點:
  • type:必須是gitlab
  • 包名:官方包包名為laravel/nova,這里仍然要使用laravel/nova,不能使用xxx/nova 

  到此大功告成,運行下composer install或者composer udpate試試。
其他問題
  有可能會出現配置正確,但是包的獲取是直接從本地cache中直接讀取的問題。這個時候,直接刪除~/.composer/cache,再試一下即可。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM