場景:
當你多個專案,都需要使用一個或者多個方法,那麼可以將公共方法,抽成一個包,進行管理(類似Log模組等)。這時候可以將你的包上傳到私有的倉庫,其他專案引入該包即可。下面來介紹下,如何引用私有倉庫的包。
1. 建立一個新的 Git 標籤
假設你已經在你的私有 GitLab 倉庫目錄中,並且你已經提交了所有的更改(執行了 git add
和 git commit
)。現在你可以透過如下命令建立一個新的標籤。
git tag v0.1.0
如果你想要附加註釋到該標籤,可以使用:
git tag -a v0.1.0 -m "Initial release"
2. 推送標籤到 GitLab:
建立標籤之後,需要將其推送到遠端倉庫:
git push origin v0.1.0
這樣標籤 v0.1.0 就會被推送到遠端倉庫,你的模組版本也就設定好了。
3. 在 go.mod
檔案中使用這個版本號
在你需要呼叫這個私有模組的專案中,更新 go.mod
檔案,指向這個特定的版本號。這可以透過 go get
命令自動完成:
go get gitlab.com/yourusername/yourrepository@v0.1.0
或者手動編輯 go.mod
檔案:
module your-other-project go 1.18 require ( gitlab.com/yourusername/yourrepository v0.1.0 )
在這裡需要注意,gitlab.com/yourusername/yourrepository這裡的包名一定需要和依賴的包名保持一致
4. 更新依賴
go mod tidy
5.注意事項
5.1 訪問GitLab倉庫認證失敗
fatal: could not read Username for 'https://gitlab.xxxx.cn': terminal prompts disabled Confirm the import path was entered correctly. If this is a private repository, see https://golang.org/doc/faq#git_https for additional information.
出現此錯誤通常是在訪問私有 GitLab 倉庫時認證失敗。要解決這個問題,可以透過以下方法來確保 go get
能夠正確地透過 HTTPS 認證訪問私有倉庫。
這裡介紹一種設定環境變數的方法
1. 建立一個 Shell 指令碼檔案來返回訪問令牌:
echo 'echo <your_personal_access_token>' > /path/to/git-askpass.sh chmod +x /path/to/git-askpass.sh
擴充如何獲得access_token:
- 登入到你的 GitLab 賬戶。
- 點選右上角的使用者頭像,然後選擇 "Settings"。
- 在左側導航欄中選擇 "Access Tokens"。
- 輸入 token 名稱,選擇相應的作用域(至少需要
read_repository
許可權)。 - 點選 "Create personal access token"。
2. 設定環境變數
export GIT_ASKPASS='/path/to/git-askpass.sh' export GIT_TERMINAL_PROMPT=0
3.配置 GOPRIVATE
如果尚未配置,確保設定 GOPRIVATE
環境變數來指示 Go 不要在 go get
期間使用 Go module proxy。
export GOPRIVATE=gitlab.com/yourusername/*
透過這種方式,GIT_ASKPASS
指令碼會在 Git 認證時返回訪問令牌,從而避免手動輸入使用者名稱和密碼。