2016-06-13 138 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设置为项目目录。