golang拉取私有庫代碼問題

楔子

在開發(fā)程序中我們會引入自己的私有庫代碼,這個私有庫代碼由gitlab gitea等服務托管。我們想通過go get 以及潛在拉取代碼命令去拉取代碼,從而解決不能下載訪問問題投队,有此記錄在此,以下只針對go module版本做論述。?

正文

前提條件:

1.配置好GOPATH環(huán)境

2.支持go module版本也就是golang >= 1.11以上

方案一:

我們可以采用go vendor(需要golang>=1.6版本)包的方式,把我們依賴的私有庫代碼放入到vendor中嗜逻。

優(yōu)點:

1.在網(wǎng)絡不好的狀況下、或者無網(wǎng)編譯缭召、拉取代碼不方便的情況下適用(比如國企業(yè)務場景)栈顷。

2.代碼能正常引用逆日,不需要更改go.mod文件

缺點:

1.如果微服務多實例,每次更新部署都需要copy一份vendor包萄凤。

2.如果依賴的代碼頻繁修改發(fā)布室抽,每個服務實例也需要copy一份覆蓋。

方案二:

采用go module提供的replace替換修改go.mod文件引用包的方法來解決靡努。具體方法也是把依賴的庫下載到本地目錄中,任意目錄即可坪圾,也可以是gopath目錄中,和vendor思想雷同惑朦。

優(yōu)點:

1.同上文方案一vendor

缺點:

1.同上文方案一vendor

2.會存在找不到替換引用的代碼包兽泄。通常我們開發(fā)代碼都是在本地,我們的私有庫都是公司內(nèi)網(wǎng)可以訪問的,可能因為一些原因你本地訪問不了內(nèi)網(wǎng)或者無法拉取私有庫代碼漾月,為了能讓代碼在本地開發(fā)環(huán)境運行起來我們可提前下載好依賴包,然后用replace替換引用到這個下載的代碼包病梢,這是replace替換功能的真正用途。重點來了栅屏,我們每次開發(fā)完成之后提交代碼需要修改go.mod replace 把replace刪除掉在提交或者修改replace替換地址飘千,不然放到線上服務器運行會出錯,會提示缺少代碼依賴包文件找不到相關錯誤栈雳,當然這個錯誤很好解決,你可以約定好目錄在線上服務器以同樣的方式和目錄下放入依賴代碼缔莲,這樣replace就能找到依賴代碼了哥纫。至于為什么要刪掉或修改replace,因為每個人的本地環(huán)境不同存放依賴庫代碼位置也不同痴奏,因此replace替換地址也不同蛀骇。以上這也是一種方案,但是你有沒有發(fā)現(xiàn)這又退化回vendor復制粘貼問題了读拆。

方案三:

終極方案擅憔,配置go的GOPRIVATE

步驟一

配置golang環(huán)境變量。使用go命令 go env 查看環(huán)境變量是否設置成自己的私有代碼庫地址


未設置

為空則未設置檐晕,或者已經(jīng)設置想修改替換則使用以下命令

go env -w GOPRIVATE=gitlab.xxx.com? ? //gitlab.xxx.com為你引用的私有庫

ps:早期舊版本golang不支持 -w參數(shù),大概golang1.14版本之后有此功能需要注意暑诸!低版本可以采用環(huán)境變量export方式設置,或者修改profile文件

其中我們可以使用模糊匹配方式比如*.開頭。然后我們執(zhí)行命令查看是否設置成功辟灰,使用go env命令如下

ok此時代表設置成功个榕。

步驟二

配置git配置文件。linux切換到 ~/.gitconfig目錄文件下芥喇,如果沒有則在該目錄創(chuàng)建此文件西采。然后打開此文件準備添加內(nèi)容。在我們拉取clone代碼訪問有以下兩種方式一種是ssh訪問继控,以及https這種械馆,以下針對這兩種配置說明如下

ssh:

[url "ssh://git@github.com/"]

????????insteadOf = https://github.com/

由于我的是GitHub代碼托管平臺胖眷,所以配置的是github.com域名,如果是gitlab則配置自己搭建的gitlab域名地址霹崎,其他gitea諸如此類

以上操作也可以使用命令行方式代替瘦材,比如我想用https賬號和密碼方式代替去訪問可以使用如下命令

git config --global url."https://$GIT_USER:$GIT_TOKEN@$GOPRIVATE".insteadOf "https://$GOPRIVATE"

最終在~/.gitconfig文件中生成得內(nèi)容格式為

[url "https://root:mypassword.@gitlab.xxx.cn"]

? ? ? ? insteadOf = https://gitlab.xxx.cn

https:

[http]

????????extraheader = PRIVATE-TOKEN: {此處填寫申請的token}

如果沒有配置訪問證書以及秘鑰則先去代碼托管平臺申請然后在執(zhí)行步操作。

到此基本已經(jīng)結束仿畸,此時我們在拉取代碼不出意外基本成功食棕,如何驗證是否成功則可以使用以下命令:

go mod tidy

具體操作就是拉取依賴代碼,對依賴包文件進行增加或者刪減错沽,同時檢驗go.mod文件的正確性,并對其修改引用簿晓。

然后我們可以看見如下信息

示例圖片

優(yōu)點:

1.每次升級部署無需copy代碼,只需要在go.mod中指定代碼依賴版本即可

2.無需每次修改go.mod文件

3.一勞永逸

缺點

1.配置流程較為麻煩千埃,只配置一次但還可以接受

2.如果程序代碼部署到多臺物理機憔儿,每臺物理機需要安裝配置git以及配置環(huán)境變量等,如今有docker等鏡像制作方式這點也可以接受放可。

提示: 有的時候可能設置好了私鑰等配置但是還是不能拉取下來代碼,可以嘗試清理構建得緩存內(nèi)容谒臼,使用golang命令 go clean -modcache 方式具體參考go clean命令

總結

以上列舉出了針對私有庫拉取代碼的實現(xiàn)方案,并對每種方案的優(yōu)缺點說明進行了總結耀里,其中本文并沒有對曾經(jīng)的代碼管理方式dep來進行說明蜈缤,此方案golang官方已經(jīng)廢棄,因此在這里不在贅述冯挎。

參考文章

https://golang.org/doc/faq#git_https

https://zhuanlan.zhihu.com/p/646336183?utm_id=0

https://blog.csdn.net/xcbeyond/article/details/132233404

一個用golang得渣專生

完~

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載底哥,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。
  • 序言:七十年代末房官,一起剝皮案震驚了整個濱河市趾徽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌翰守,老刑警劉巖孵奶,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蜡峰,居然都是意外死亡了袁,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進店門事示,熙熙樓的掌柜王于貴愁眉苦臉地迎上來早像,“玉大人,你說我怎么就攤上這事肖爵÷校” “怎么了?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長冀自。 經(jīng)常有香客問我揉稚,道長,這世上最難降的妖魔是什么熬粗? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任搀玖,我火速辦了婚禮,結果婚禮上驻呐,老公的妹妹穿的比我還像新娘镶苞。我一直安慰自己匀谣,他們只是感情好捉超,可當我...
    茶點故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布府适。 她就那樣靜靜地躺著,像睡著了一般佣盒。 火紅的嫁衣襯著肌膚如雪挎袜。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天肥惭,我揣著相機與錄音盯仪,去河邊找鬼。 笑死蜜葱,一個胖子當著我的面吹牛全景,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播笼沥,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼蚪燕,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了奔浅?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤诗良,失蹤者是張志新(化名)和其女友劉穎汹桦,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鉴裹,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡舞骆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了径荔。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片督禽。...
    茶點故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖总处,靈堂內(nèi)的尸體忽然破棺而出狈惫,到底是詐尸還是另有隱情,我是刑警寧澤鹦马,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布胧谈,位于F島的核電站忆肾,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏菱肖。R本人自食惡果不足惜客冈,卻給世界環(huán)境...
    茶點故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望稳强。 院中可真熱鬧场仲,春花似錦、人聲如沸退疫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蹄咖。三九已至褐健,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間澜汤,已是汗流浹背蚜迅。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留俊抵,地道東北人谁不。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像徽诲,于是被迫代替她去往敵國和親刹帕。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,509評論 2 348

推薦閱讀更多精彩內(nèi)容