背景
公司一個(gè)golang的項(xiàng)目,使用到了公司的私有倉(cāng)庫(kù),去執(zhí)行g(shù)o mod tidy(下載依賴)的時(shí)候,到download公司私有庫(kù)的時(shí)候就報(bào)錯(cuò),報(bào)錯(cuò)信息也不明顯,只是提示找不到影響版本unkown revision
小知識(shí)
go mod
golang用來(lái)管理用來(lái)的,類似java的maven(但肯定沒(méi)有maven這么好用)
go mod tidy ,下載更新依賴
go install這種下載依賴的方式其實(shí)是通過(guò)go get的方式去下載的
go insall -x 加上-x命令,可以查看更多的錯(cuò)誤信息
golang環(huán)境配置
linux
安裝go >= 1.12.x
vi /etc/profile
export GOROOT=/usr/local/go (go語(yǔ)言安裝路徑)
export GOPATH=/data/go (go業(yè)務(wù)代碼環(huán)境路徑)
export GO111MODULE=on (啟用Mod依賴)
export GOPORT=8082 (啟動(dòng)端口,默認(rèn)8080)
export GIN_MODE=debug (gin環(huán)境模式,線上用release)
export GOPRIVATE=gitlab.XXXX.com/XXX/* (公司私有私有庫(kù))
source /etc/profile
可惜我的環(huán)境是windows上的,索性也折騰了一下
使用的是windows的powershell
ls env: 顯示環(huán)境變量
$env:GOPRIVATE="gitlab.XXXX.com/XXX/*" 設(shè)置環(huán)境變量
當(dāng)然你可以直接通過(guò)圖形化界面去配置,原理一致
git 配置
git的默認(rèn)配置在當(dāng)前用戶目錄的.gitconfig文件中,不管是windows還是linux
git config -l 查看git的所有配置
git config --global user.name="jwen" 設(shè)置global配置
踩坑
golang版本問(wèn)題
電腦上本來(lái)使用的是go1.12,看代碼里面給出的說(shuō)是大于1.12就行了的,但知道golang的1.12和1.13版本有比較大區(qū)別,因?yàn)槲揖蛷?qiáng)行升級(jí)了一波,直接來(lái)到了golang1.14版本
在1.12版本的時(shí)候,要手動(dòng)打開(kāi)GO111MODULE ,就是導(dǎo)入這個(gè)環(huán)境變量GO111MODULE=on
而在1.13版本的話,就跟根據(jù)目錄是否有g(shù)o.mod文件自動(dòng)打開(kāi)的
所以建議升級(jí)就golang版本到1.13以上版本
**
git版本問(wèn)題
這個(gè)是萬(wàn)萬(wàn)沒(méi)想到的,說(shuō)是go mod調(diào)用鏈中會(huì)用到一些git指令,當(dāng)git版本比較舊時(shí),調(diào)用失敗產(chǎn)生錯(cuò)誤,并給出歧義的提示信息,提示unknown revision
解決方法:更新git
gitlab請(qǐng)求問(wèn)題
公司的gitlab倉(cāng)庫(kù)請(qǐng)求的是http請(qǐng)求,而不是https請(qǐng)求,這個(gè)需要根據(jù)公司實(shí)際情況來(lái)看
解決辦法
1、確認(rèn)golang,git版本,建議升級(jí)到最新版本;
2、新增golang的環(huán)境變量,新增GOPRIVATE,value配置為自己需求的私有倉(cāng)庫(kù),讓golang可以下載私有庫(kù)的東西
建議直接golang設(shè)置
golang設(shè)置
go env -w GOPRIVATE="gitlab.xxx.com/xxxx/*"
linux配置
export GOPRIVATE=gitlab.xxx.com/xxxx/*
windows配置
$env:GOPRIVATE="gitlab.XXXX.com/XXX/*"
3、修改git配置,因?yàn)間o install/mod tidy 去下載依賴其實(shí)是通過(guò)git命令去下載的,而且默認(rèn)是http協(xié)議去下載的,建議是修改為ssh協(xié)議去獲取
方法一:通過(guò)修改文件方式,去到當(dāng)前用戶目錄修改.gitconfig文件,新增如下,注意私有庫(kù)是http還是https
[url "git@gitlab.xxxx.com:"]
insteadOf = http://gitlab.xxxxx.com/
方法二:通過(guò)命令行形式,直接執(zhí)行命令如下:
git config --global url."git@gitlab.xxxx.com:".insteadOf http://gitlab.xxxx.com/
4、然后執(zhí)行g(shù)o install 或者 go mod tidy確認(rèn)是否可以正常下載依賴
補(bǔ)充:go mod download 私有倉(cāng)庫(kù)依賴時(shí)返回 unknown revision v1.0.1問(wèn)題處理
1、go設(shè)置私有倉(cāng)庫(kù)
go env -w GOPRIVATE="YourRepositorySite/*"
2、git config --global url."https://YourRepositorySite".insteadof "ssh:git@YourRepositorySite"
將ssh地址切換成https
3、設(shè)置記住密碼
git config --global credential.helper store
4、git clone YourRepositorySite 記住密碼
5、go mod download下載成功
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
您可能感興趣的文章:- Go語(yǔ)言 如何實(shí)現(xiàn)RSA加密解密
- golang 如何實(shí)現(xiàn)HTTP代理和反向代理
- Golang實(shí)現(xiàn)http文件上傳小功能的案例
- 解決golang 關(guān)于全局變量的坑
- Goland使用Go Modules創(chuàng)建/管理項(xiàng)目的操作
- Go語(yǔ)言獲取文件的名稱、前綴、后綴