2016-06-13 54 views
0

我們正在gitlab ci上構建幾個GO項目,我們遇到以下兩難困境。gitlab-ci中的全局GOPATH

當使用global GOPATH構建項目(與本地計算機一樣)時,由於所有依賴項都在每個構建版上獲取,因此構建時間太長。

。另一方面,在定義了本地GOPATH和緩存由去拿創建的文件夾時,我們得到了快速的構建,但尷尬的項目設置,在項目本身是不是就GOPATH等等

這將是很好,如果有全局緩存,但gitlab慈不允許:

警告:/build/src/git.my.repo:不支持:外建目錄

+1

你是不是推銷你的依賴?這將解決所有構建問題,因爲所有代碼都將安全地檢入到您的存儲庫中。即使您的某個代銷商進行了突破性更改或其回購協議消失,製造商也可以確保可靠地進行重複生產。 Go 1.5 +直接支持vendoring,其中任何/vendor /'被Go的工具視爲只在該項目的任何版本中被視爲在$ GOPATH/src中,你甚至不得不改變你的進口線。 – Kaedys

回答

1

我會同意@Kaedys在這一個。如果您使用銷售的依賴關係並緩存您的vendor目錄,則不必爲每個構建獲取它們。如果你還沒有出售,那麼有一些tools to help you

我也見過當地的GOPATH作品。我不確定你是如何實現它的,但是你可以看看它是如何完成的here for an example。它們有一個本地環境,在目錄內部將GOPATH設置爲項目目錄。