背景
啟動了一個新項目,做一個運維小工具,準備嘗試一下 Golang。
因需要對接内部的 RABC 系統,索性封裝了一個 SDK,也友善之後新項目的對接使用。
那麼,怎麼能夠使用 go.mod 來使用私有的依賴呢?
環境
- gitlab(私有)
- golang v1.16.3
解決方案
我們需要對 Golang 做一些簡單的配置。
1、使用 go module
2、配置 GOPRIVATE,當使用 go get 時,指定的域名會直接通過 git 拉取。
go env -w GOPRIVATE=gitlab.***.com
3、配置 GOINSECURE,我們目前使用的是 http,而 go get 預設使用 https, 配置之後,指定域名會預設使用 http。
若私有的 gitlab 是 https 協定,可以忽略此步驟
go env -w GOINSECURE=gitlab.***.com
Golang 的配置已經做完了,若項目是私有的,也就是說,拉取項目需要登入,或者需要 ssh key。
為了友善,我們需要對 git 做一個配置,讓其都使用 SSH 的形式拉取項目,這樣我們就不需要在 go get 的時候輸入賬戶密碼了。
git 修改後的結果如下:
[email protected]:~# more ~/.gitconfig
[url "[email protected]***.com:"]
insteadOf = http://gitlab.***.com/
可能需要的問題
如果我們需要做自動化,在第一次建構項目時,會遇到 ssh fingerprint 的問題。
這個是第一次擷取 git 項目時,需要确認的,我們需要確定 ~/.ssh/known_hosts 中已經記錄了相關資訊,才能夠建構成功。