如何讓 Gitlab 私有倉庫支持 Go Get
【導讀】本文介紹了配置 Gitlab 實現私有倉庫的實踐。
通常公司都會有自己的 Git 倉庫,可能涉及到利用 go get 進行項目依賴的問題。
我們以 Gitlab 作爲私有倉庫爲例,倉庫地址爲:gitlab.com
。
私有倉庫鑑權設置
go get 默認採用的 https 下載項目依賴,而私有倉庫一般採用的 ssh key 的方式鑑權,所以直接使用 go get 會出現 https 鑑權失敗的問題, 解決辦法有兩種。
1. 將 https 替換爲 ssh
這種方式適合在自己的電腦上使用。
讓 git 執行 git clone https://gitlab.com/xx.git
時,自動替換爲執行git clone git@gitlab.etsus.net:xx.git
, 需要執行如下命令:
git config --global url."git@gitlab.etsus.net:".insteadof "https://gitlab.etsus.net/"
BASH
2. 利用 Gitlab 的 Access Token 鑑權
在有些情況下,比如對於編譯服務器,可能採用 ssh key 的方式權限太大,可以採用Access Token
的方式來解決問題。
進入Gitlab
—>Settings
—>Access Tokens
,然後創建一個 personal access token,這裏權限最好選擇只讀 (read_repository)。
然後讓 git 在執行 git clone https://gitlab.com/xx.git
時,自動替換爲執行git clone https://oauth2:${your_access_token}@gitlab.com/xx.git
, 需要執行如下命令:
git config --global url."https://oauth2:${your_access_token}@gitlab.com".insteadOf "https://gitlab.com"
將${your_access_token}
替換爲自己的 token
GOPROXY 的導致的問題
在完成了上面的配置以後,還要看當前是否配置了GOPROXY
,如果配置了GOPROXY
,會導致私有庫不可用。因爲GOPROXY
會導致 go get 所有的請求通過 PROXY 下載,最終導致鑑權失效。因此需要配置GOPRIVATE
來指定私有庫,配置到GOPRIVATE
中的地址將不會轉發到GOPROXY
中了。
命令:
go env -w GOPRIVATE=gitlab.com
http 導致的問題
需要運行在 golang 1.14 版本及以上 go get 默認採用的 https,當我們的私有庫是 http 的時候,需要利用GOINSECURE
將 https 轉爲 http。命令如下:
go env -w GOINSECURE=gitlab.etsus.net
轉自:
oskip.com/post/private-repo-http-go-get/
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/nMg4HB4sJkgrEC9iyfT4_A