go mod私有倉(cāng)庫(kù)配置小結(jié)
Golang版本控制
go version v1.22.0
當(dāng)我們新建一個(gè)go項(xiàng)目時(shí),在項(xiàng)目根目錄下執(zhí)行go mod init可以初始化go.mod文件用于管理包依賴。后續(xù)執(zhí)行go mod tidy更新并下載所有的依賴包。
如果我們沒有進(jìn)行配置,則只能訪問公共開源倉(cāng)庫(kù)。如果想要下載私有倉(cāng)庫(kù)依賴包則需要進(jìn)行一些配置。
go mod使用私有倉(cāng)庫(kù)(gitlab)依賴設(shè)置
假如想配置托管站點(diǎn)gitlab.example.cn,按照如下步驟操作:
設(shè)置GOPRIVATE環(huán)境變量,防止走代理:
- go env -w GOPRIVATE=*.gitlab.example.cn/*
- go env -w GONOPROXY=*.gitlab.example.cn/*
配置倉(cāng)庫(kù)訪問權(quán)限,有兩種方式:
- 方式一(推薦): 配置git將請(qǐng)求從ssh轉(zhuǎn)換為https:git config --global url."ssh://git@gitlab.example.cn/".insteadof "https://gitlab.example.cn/"
- 方式二:添加倉(cāng)庫(kù)訪問Token: git config --global http.extraheader "PRIVATE-TOKEN: YOUR_PRIVATE_TOKEN"
由于訪問不到驗(yàn)證服務(wù)器,如下方式二選一:
- 方式一:go env -w GONOSUMDB=gitlab.example.com/*
- 方式二:關(guān)閉驗(yàn)證服務(wù) go env -w GOSUMDB=off
如果私有庫(kù)不支持https協(xié)議,設(shè)置跳過CA證書校驗(yàn):go env -w GOINSECURE='gitlab.example.com/*'
配置完成后可以git config -l查看git配置,也可以通過.gitconfig直接編輯git配置:
[http] extraheader = PRIVATE-TOKEN:UsQsxy5q_Nqy-pXHtu-V [url "ssh://git@gitlab.example.cn/"] insteadof = https://gitlab.example.cn/
通過go env查看環(huán)境變量配置,也可以直接通過profile配置環(huán)境變量:
export GOPRIVATE=*.gitlab.example.com/* export GONOPROXY=*.gitlab.example.com/* export GOINSECURE=*.gitlab.example.com/* export GONOSUMDB=*.gitlab.example.com/*
配置代碼托管站點(diǎn)
Go mod尋找代碼倉(cāng)庫(kù)原理
https://pkg.go.dev/cmd/go#hdr-Remote_import_paths
如果import路徑不是已知的代碼托管站點(diǎn)并且也缺少版本控制限定符,則go工具會(huì)嘗試通過https/http獲取導(dǎo)入并在文檔的HTML <head>中查找<meta>標(biāo)記。
元標(biāo)記的形式如下:
<meta name="go-import" content="import-prefix vcs repo-root">
使用mod時(shí),會(huì)識(shí)別go-import元標(biāo)記的附加變體,并且優(yōu)先級(jí)高于那些默認(rèn)的版本控制系統(tǒng)。該變體使用mod作為內(nèi)容值中的vcs,如下所示:
<meta name="go-import" content="example.org mod https://code.org/moduleproxy">
此標(biāo)簽表示從 URLhttps://code.org/moduleproxy上的模塊代理中獲取路徑以 example.org開頭的模塊。有關(guān)代理協(xié)議的詳細(xì)信息, 請(qǐng)參閱https://golang.org/ref/mod#goproxy-protocol 。
查找模塊路徑的存儲(chǔ)庫(kù):https://go.dev/ref/mod#vcs-find
使用代理實(shí)現(xiàn)代碼托管站點(diǎn)訪問
一般主流的代碼托管站站點(diǎn)如github,gitlab,Gitee等,都默認(rèn)支持返回站點(diǎn)的golang mod元數(shù)據(jù)。
如果無法對(duì)外暴露站點(diǎn)的域名,且甚至無法擁有更改站點(diǎn)訪問地址的權(quán)限。比如,部署站點(diǎn)的時(shí)候是以ip+port的方式訪問。這時(shí)需要配置一個(gè)虛擬的域名作為go mod的引用包路徑,這時(shí)可以使用Nginx配置站點(diǎn)的內(nèi)網(wǎng)訪問代理,返回帶有元標(biāo)記的靜態(tài)頁(yè)面。例如要訪問站點(diǎn)gitlab.example.com:
if ($args ~* "^go-get=1") {
set $condition goget;
}
if ($uri ~ "(/[^/]+/[^/]+)(/.*)?") {
set $condition "${condition}path";
}
if ($condition = gogetpath) {
return 200 "<!DOCTYPE html><html><head><meta content='gitlab.example.com$1 git https://gitlab.example.com$1.git' name='go-import'></head></html>";
}
參考:https://stackoverflow.com/questions/26347516/using-go-get-on-a-personal-git-repo
到此這篇關(guān)于go mod私有倉(cāng)庫(kù)配置小結(jié)的文章就介紹到這了,更多相關(guān)go mod私有倉(cāng)庫(kù)配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Golang的Crypto/SHA256庫(kù)實(shí)戰(zhàn)指南
無論是在保護(hù)數(shù)據(jù)安全、驗(yàn)證數(shù)據(jù)完整性,還是在構(gòu)建復(fù)雜的安全系統(tǒng)中,crypto/sha256都是Golang程序員不可或缺的工具,本文主要介紹了Golang的Crypto/SHA256庫(kù)實(shí)戰(zhàn)指南,感興趣的可以了解一下2024-02-02
Fedora14 Linux系統(tǒng)安裝Golang開發(fā)環(huán)境筆記
這篇文章主要介紹了Fedora14 Linux系統(tǒng)安裝Golang開發(fā)環(huán)境筆記,本文講解了2種安裝方法,需要的朋友可以參考下2014-10-10
Go?gRPC服務(wù)proto數(shù)據(jù)驗(yàn)證進(jìn)階教程
這篇文章主要為大家介紹了Go?gRPC服務(wù)proto數(shù)據(jù)驗(yàn)證進(jìn)階教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
8種超簡(jiǎn)單的Golang生成隨機(jī)字符串方式分享
這篇文章主要為大家詳細(xì)介紹了8種超簡(jiǎn)單的Golang生成隨機(jī)字符串方式,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-01-01
Go 語言下基于Redis分布式鎖的實(shí)現(xiàn)方式
本篇文章將詳細(xì)介紹如何正確地實(shí)現(xiàn)Redis分布式鎖,下面通過一個(gè)項(xiàng)目基于 Redis 的分布式鎖能夠提供哪些分布鎖特性,本文給大家介紹的非常詳細(xì),需要的朋友參考下吧2021-06-06
go?time.Sleep睡眠指定時(shí)間實(shí)例詳解(小時(shí)級(jí)到納秒級(jí))
golang的休眠可以使用time包中的sleep,下面這篇文章主要給大家介紹了關(guān)于go?time.Sleep睡眠指定時(shí)間(小時(shí)級(jí)到納秒級(jí))的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11
對(duì)Golang import 導(dǎo)入包語法詳解
今天小編就為大家分享一篇對(duì)Golang import 導(dǎo)入包語法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-06-06
Go語言使用protojson庫(kù)實(shí)現(xiàn)Protocol Buffers與JSON轉(zhuǎn)換
本文主要介紹Google開源的工具庫(kù)Protojson庫(kù)如何Protocol Buffers與JSON進(jìn)行轉(zhuǎn)換,以及和標(biāo)準(zhǔn)庫(kù)encoding/json的性能對(duì)比,需要的朋友可以參考下2023-09-09

