亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

帶有私有 gitlab (ssh) 的 Goland 模塊

帶有私有 gitlab (ssh) 的 Goland 模塊

Go
ITMISS 2022-04-26 15:30:18
再會!我嘗試從 glide 遷移到 go 模塊(私人 gitlab 存儲庫)并通過 ssh 簽出代碼我有一個從私人 gitlab 倉庫導入的簡單項目。go.mod 看起來像:module my.private.package/modtestgo 1.12require my.private.package/statistics v1.0.0當我嘗試構建我的應用程序或運行測試時,我得到:go: my.private.package/[email protected]: unrecognized import path "my.private.package/statistics" (parse https://my.private.package/statistics?go-get=1: no go-import meta tags ())go: error loading module requirements我嘗試將設置添加到 git config:[url "ssh://[email protected]:9999"]        insteadOf = https://my.private.package但仍然收到此錯誤。有什么辦法讓它工作嗎?謝謝你。
查看完整描述

2 回答

?
慕容森

TA貢獻1853條經驗 獲得超18個贊

我之前處理過 Go 模塊和私人 GitLab。我們的私人 GitLab 有組和子組。您可能缺少的部分是~/.netrc,您可能有一個不正確的全局 git 配置。


我為此做了一個 GitHub 要點。你可以在這里找到它:https ://gist.github.com/MicahParks/1ba2b19c39d1e5fccc3e892837b10e21


您可以在下面找到粘貼的要點:


問題

go命令行工具需要能夠從您的私有 GitLab 中獲取依賴項,但需要進行身份驗證。


這假設您的私人 GitLab 托管在privategitlab.company.com.


環境變量

推薦使用以下環境變量:


export GO111MODULE=on

export GOPRIVATE=privategitlab.company.com

以上幾行可能最適合您的 shell 啟動,例如~/.bashrc.


解釋

GO111MODULE=on告訴 Golang 命令行工具你正在使用模塊。我沒有在私有 GitLab 上使用不使用 Golang 模塊的項目對此進行測試。


GOPRIVATE=privategitlab.company.com告訴 Golang 命令行工具不要為列出的主機名使用公共互聯網資源(如公共模塊代理)。


從您的私人 GitLab 獲取個人訪問令牌

為了將來證明這些說明,請遵循GitLab 文檔中的本指南。我知道read_apiGolang 命令行工具需要范圍才能工作,我也可能懷疑read_repository,但尚未證實這一點。


設置~/.netrc

為了讓 Golang 命令行工具向 GitLab 進行身份驗證,~/.netrc最好使用文件。


如果文件不存在,要創建該文件,請運行以下命令:


touch ~/.netrc

chmod 600 ~/.netrc

現在編輯文件的內容以匹配以下內容:


machine privategitlab.company.com login USERNAME_HERE password TOKEN_HERE

WhereUSERNAME_HERE替換為您的 GitLab 用戶名,并TOKEN_HERE替換為上一節中獲取的訪問令牌。


常見錯誤

不要使用以下內容設置全局 git 配置:


git config --global url."[email protected]:".insteadOf "https://privategitlab.company.com"

我相信在撰寫本文時,Golang 命令行工具不完全支持 SSH git,這可能會導致與~/.netrc.


獎勵:SSH 配置文件

對于該git工具的常規使用,而不是 Golang 命令行工具,最好~/.ssh/config設置一個文件。為此,請運行以下命令:


mkdir ~/.ssh

chmod 700 ~/.ssh

touch ~/.ssh/config

chmod 600 ~/.ssh/config

請注意,以上文件和目錄的權限是 SSH 在大多數 Linux 系統上以默認配置工作的必要條件。


然后,編輯~/.ssh/config文件以匹配以下內容:


Host privategitlab.company.com

  Hostname privategitlab.company.com

  User USERNAME_HERE

  IdentityFile ~/.ssh/id_rsa

請注意上述文件中的間距很重要,如果不正確將使文件無效。


USERNAME_HERE您的 GitLab 用戶名在哪里,并且是文件系統中SSH私鑰~/.ssh/id_rsa的路徑。您已經將其公鑰上傳到GitLab。這里有一些說明。


查看完整回答
反對 回復 2022-04-26
?
GCT1015

TA貢獻1827條經驗 獲得超4個贊

你用的是什么版本的圍棋?如果是 Go 1.13 或更高版本,默認是通過 proxy.golang.org 下載模塊。您可以使用GOPRIVATE環境變量為一組特定的包更改它。

這是來自 的引述go help module-private,我強烈建議您完整閱讀。直接獲取模塊后,它應該使用與之前模塊相同的git/邏輯。ssh

GOPRIVATE 環境變量控制 go 命令認為哪些模塊是私有的(不公開),因此不應使用代理或校驗和數據庫。該變量是以逗號分隔的模塊路徑前綴的 glob 模式列表(在 Go 的 path.Match 的語法中)。例如,

GOPRIVATE=*.corp.example.com,rsc.io/private

導致 go 命令將路徑前綴匹配任一模式的任何模塊視為私有模塊,包括 git.corp.example.com/xyzzy、rsc.io/private 和 rsc.io/private/quux。


查看完整回答
反對 回復 2022-04-26
  • 2 回答
  • 0 關注
  • 243 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號