背景:
爲了方便包管理,引入govendor進行項目的golang包管理,那有這個幾個問題須要解決:
問題:
- 由於項目裏有.git致使的文件目錄不能訪問問題如何更好的解決
目前,公司的項目裏直接find是沒法在vendor目錄下找到其它依賴項目的.git的,因此確定是不能有
- 如何用govendor管理項目包依賴,並能正確的在持續集成/持續發佈平臺上編譯構建成功並最終發佈
若是你本身初次嘗試用vendor的話可能須要思考這些問題,特別是第一個問題vendor.json怎麼寫,後來我才發現這個不是本身寫的(本身真的是sx),其實go.15以後的版本已經默認支持govendor了,因此不要擔憂你的代碼放在vendor下在你使用go build的時候它找不到,具體原理自行Google,本篇文章目的只有一個,如何從零搭建一個用govendor管理的repository,我直接上例子,就用gin這個例子吧步驟以下:
1.在git/gitlab上New repository//這一步不解釋
git clone 上邊的項目地址
cd caoge.videoarch.edge-uploader
2初步配置vendor.json
不要方,你init以後會出現vendor/vendor.json的
而後你會看到json文件裏面填充了信息,主要是reversion的版本信息,v1.2
完了以後你會看到vendor.json已經很完善了,你能夠進行編譯,也能經過
另外,不幸若是出現由於ssh登錄而字體設置問題的緣由致使的git rm -r dirname失敗的狀況
參考:
目前比較討厭的是
golang.org/x下邊的文件沒有好的解決方案,只能本身手動下載在指定依賴的地方而後cp進去,這個時候就會出現第二個問題,因此務必手動find+rm掉.git
各位大神有好的方案歡迎補充~~~
另外,發現一個坑,踩了2小時,(真佩服本身這麼挫),在使用govendor fetch -v xxx進行包的依賴更新的時候,發現並無報錯,可是拉下來的是空的目錄,在vendor.json中也看到的revision是空的,由於我當時是拉取的新遷移的倉庫,因此一直在懷疑我遷移的有問題,搞了半天,後來從新建立個倉庫仍是這個問題,有點懵逼了,以前這樣都好好的,我又嘗試go get了下那個倉庫,多試了幾回發現服務proxy HTTP 503了,我纔想起來可能和我配置的https代理有關,我去掉環境該https代理的環境變量以後果真govender fetch獲取到了完整的項目,操!!
good luck!!!!