天天看點

go.mod 使用私有依賴

go.mod 使用私有依賴

背景

啟動了一個新項目,做一個運維小工具,準備嘗試一下 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 中已經記錄了相關資訊,才能夠建構成功。