go module,使用gitlab私有倉庫做爲項目的依賴包

自從golang 1.11推出go moudle機制來更好的管理項目依賴後,就開始小範圍嘗試使用go mod來替換曾經的dep,實話實說還不錯,很穩定,比起dep以及第三方的govendor來講也更加方便和快速。git

在曾經使用的項目上中,有一部分項目的依賴是放在github中的公開倉庫的(如中間件、工具包),放入公開倉庫中然經過dep將依賴拉取到vendor中。github

最近內部又作了個相關的依賴包,也不算工具,但此次多少跟業務有點結合,此次確定不能放在github public倉庫,因而就想着,放入內部的gitlab私有倉庫中,想着之後能不能把github中的某一部分也遷移過來。golang

好比,經過RPC或HTTP調用服務時能夠把公共的struct,service,method放入gitlab私有倉庫中,這是必然的。ssh

在public倉庫好說,在go mod init gitlab.com/groupName/projectName後,不作任何處理直接直接 go mod vendor會自動拉取第三方依賴。可是若是是gitlab等私有倉庫中是get不下來的。工具

這本質上仍是解決go get的問題。因此,接下來,咱們要解決go get私有倉庫:gitlab

  • 獲取gitlab的token

進入Gitlab—>Settings—>Access Tokens,而後建立一個personal access token,這裏權限最好選擇只讀(read_repository)。url

  • git配置添加access token

有了access token後,咱們還須要在git中進行配置,這樣才能go get下了私有倉庫的包,須要把剛剛的token添加進git的請求頭中,操做以下:code

git config --global http.extraheader "PRIVATE-TOKEN: YOUR_PRIVATE_TOKEN"
  • 配置git將請求從ssh轉換爲http

配置以下:中間件

git config --global url."git@gitlab.com:groupName/projectName.git".insteadOf "https://gitlab.com/groupName/projectName.git"`

上述配置已經完成了,能夠試着拉去gitlab私有倉庫的代碼:token

go get -u -v gitlab.com/groupName/projectName

此時,執行go mod vendor也是能夠正常拉取的。

相關文章
相關標籤/搜索