自從golang 1.11推出go moudle機(jī)制來更好的管理項(xiàng)目依賴后稼跳,就開始小范圍嘗試使用go mod來替換曾經(jīng)的dep妄帘,實(shí)話實(shí)說還不錯(cuò)懂傀,很穩(wěn)定,比起dep以及第三方的govendor來說也更加方便和快速痹届。
在曾經(jīng)使用的項(xiàng)目上中,有一部分項(xiàng)目的依賴是放在github中的公開倉庫的(如中間件打月、工具包)队腐,放入公開倉庫中然通過dep將依賴?yán)〉絭endor中。
最近內(nèi)部又做了個(gè)相關(guān)的依賴包奏篙,也不算工具柴淘,但這次多少跟業(yè)務(wù)有點(diǎn)結(jié)合,這次肯定不能放在github public倉庫,于是就想著为严,放入內(nèi)部的gitlab私有倉庫中敛熬,想著以后能不能把github中的某一部分也遷移過來。
比如第股,通過RPC或HTTP調(diào)用服務(wù)時(shí)可以把公共的struct应民,service,method放入gitlab私有倉庫中炸茧,這是必然的瑞妇。
在public倉庫好說,在go mod init gitlab.com/groupName/projectName后梭冠,不做任何處理直接直接 go mod vendor會(huì)自動(dòng)拉取第三方依賴辕狰。但是如果是gitlab等私有倉庫中是get不下來的。
這本質(zhì)上還是解決go get的問題控漠。所以蔓倍,接下來,我們要解決go get私有倉庫:
- 獲取gitlab的access token
進(jìn)入Gitlab
—>Settings
—>Access Tokens
盐捷,然后創(chuàng)建一個(gè)personal access token
偶翅,這里權(quán)限最好選擇只讀(read_repository)。
- git配置添加access token
有了access token后碉渡,我們還需要在git中進(jìn)行配置聚谁,這樣才能go get下了私有倉庫的包,需要把剛剛的token添加進(jìn)git的請(qǐng)求頭中滞诺,操作如下:
git config --global http.extraheader "PRIVATE-TOKEN: YOUR_PRIVATE_TOKEN"
- 配置git將請(qǐng)求從ssh轉(zhuǎn)換為http
配置如下:
git config --global url."git@gitlab.com:groupName/projectName.git".insteadOf "https://gitlab.com/groupName/projectName.git"`
也可以直接全局替換形导,那么可以拉取域名下的所有包,如:
git config --global url."git@gitlab.yoursite.com:".insteadof "https://gitlab.yoursite.com/"
上述配置已經(jīng)完成了习霹,可以試著拉取gitlab私有倉庫的代碼:
go get -u -v gitlab.com/groupName/projectName
此時(shí)朵耕,執(zhí)行g(shù)o mod vendor也是可以正常拉取的。