使用 Docker 快速构建项目,无需签入供应商库
Quick Go project build with Docker without checking in vendor libraries
目前,我们在 src/vendor
中拥有所有出售的库,这使得 docker-compose build
非常快。尽管将出售的库添加到源代码管理有库未更新的缺点,并且还会严重污染拉取请求的差异。
是否有介于两者之间的方法,也许是缓存?
Is there a way in between, maybe with caching?
是的,好几个。但是不要打system/preferred方法。
像您已经在做的那样使用$GOPATH/src/MyProject/vendor
。
adding vendored libraries to source control has the disavantage of libraries not being updated...
这完全取决于您的团队对您的存储库的管理。如果每个人都忽视供应商,它就会变得陈旧。
就我个人而言,我养成了“每月第一天”检查并刷新所有依赖项的习惯,运行我们的测试套件,如果没有错误,请更新开发服务器上的 QA 集成测试并保留发布后注意错误日志。 godep
和 gostatus
等工具极大地帮助您将 GOPATH 保持在最新状态,您可以快速更新供应商文件夹。
只需确保它是一个专门的提交,以便在出现问题时可以快速恢复。
also heavily polluting the diff of pull requests
首先,这只是一个流程任务。我对所有拉取请求强制执行变基并拒绝所有回购中的所有合并。这保持了非常干净的 git 历史;但是,更重要的是,变基会将您的本地提交移动到供应商更新之后。除非有人添加了相同的包,否则永远不会发生冲突。那个时候就简单了,拿最新的一个就搞定了。
听起来好像还有流程问题需要解决,而不是担心/供应商管理。
目前,我们在 src/vendor
中拥有所有出售的库,这使得 docker-compose build
非常快。尽管将出售的库添加到源代码管理有库未更新的缺点,并且还会严重污染拉取请求的差异。
是否有介于两者之间的方法,也许是缓存?
Is there a way in between, maybe with caching?
是的,好几个。但是不要打system/preferred方法。
像您已经在做的那样使用$GOPATH/src/MyProject/vendor
。
adding vendored libraries to source control has the disavantage of libraries not being updated...
这完全取决于您的团队对您的存储库的管理。如果每个人都忽视供应商,它就会变得陈旧。
就我个人而言,我养成了“每月第一天”检查并刷新所有依赖项的习惯,运行我们的测试套件,如果没有错误,请更新开发服务器上的 QA 集成测试并保留发布后注意错误日志。 godep
和 gostatus
等工具极大地帮助您将 GOPATH 保持在最新状态,您可以快速更新供应商文件夹。
只需确保它是一个专门的提交,以便在出现问题时可以快速恢复。
also heavily polluting the diff of pull requests
首先,这只是一个流程任务。我对所有拉取请求强制执行变基并拒绝所有回购中的所有合并。这保持了非常干净的 git 历史;但是,更重要的是,变基会将您的本地提交移动到供应商更新之后。除非有人添加了相同的包,否则永远不会发生冲突。那个时候就简单了,拿最新的一个就搞定了。
听起来好像还有流程问题需要解决,而不是担心/供应商管理。