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

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

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

最近內部又做了個相關的依賴包,也不算工具,但這次多少跟業(yè)務有點結合,這次肯定不能放在github public倉庫,于是就想著,放入內部的gitlab私有倉庫中,想著以后能不能把github中的某一部分也遷移過來。

比如,通過RPC或HTTP調用服務時可以把公共的struct,service,method放入gitlab私有倉庫中,這是必然的。

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

這本質上還是解決go get的問題。所以,接下來,我們要解決go get私有倉庫:

  • 獲取gitlab的access token

進入Gitlab—>Settings—>Access Tokens,然后創(chuàng)建一個personal access token,這里權限最好選擇只讀(read_repository)。

  • git配置添加access token

有了access token后,我們還需要在git中進行配置,這樣才能go get下了私有倉庫的包,需要把剛剛的token添加進git的請求頭中,操作如下:

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"`

也可以直接全局替換,那么可以拉取域名下的所有包,如:

git config --global url."git@gitlab.yoursite.com:".insteadof "https://gitlab.yoursite.com/"

上述配置已經完成了,可以試著拉取gitlab私有倉庫的代碼:

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

此時,執(zhí)行go mod vendor也是可以正常拉取的。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容