Go Module with private github repository
今天用 go mod download
想下載新專案的依賴的時候一直遇到一個錯誤
go: github.com/your-repo/your-kit@v0.1.0: reading github.com/your-repo/your-kit/go.mod at revision v0.1.0: unknown revision v0.1.0
這是因為我們有使用到一些私有repo 上面的 library,然後我們沒有給權限,所以在使用 go mod download
無法成功抓取,就出現這樣的訊息了。這邊需要做下面這個流程就可以成功了
- 因為
go mod
其實底層是呼叫 git 的指令來做事情,所以我們必須給 git 有 http 的權限可以讀取私有的 github repository - Github 是有提供一種叫
person access token
讓你可以用這個token
不須輸入帳號密碼就可以讀取私有的 repo 了,所以我們需要先申請一個 token,流程可以參考這邊 - 當你拿到 token 之後,應該可以先透過這個指令試試看,理論上應該要可以成功下載
git clone https://<token>@github.com/<your-repo>/<your-kit>.git
- 因為
go mod
預設會透過proxy.golang.org
去抓資料,但因為我們是 private repo, 所以我們需要指定某些 url 開頭的都不走這條路, 這樣只要是 github.com/your-repo/logkit 或是 github.com/your-repo/config-kit 這些都不會透過 proxy 走了,而是直接讀取
go env -w GOPRIVATE=github.com/<your-repo>/*
- 接下來我們需要把剛剛拿到 person access token 設定到 git config 裡面就好了
git config --global url."https://<token>@github.com".insteadOf "https://github.com"
這邊是比較要留意的地方,這邊只需要給 token
, 不需要給 username
如果需要清楚 go module cache 可以透過
go clean -modcache
要檢查 git config, 可以透過
git config --global --edit