go - 使用 Docker 快速构建项目,无需 checkin vendor 库

标签 go docker docker-compose

目前,我们在 src/vendor 中拥有所有 vendor 库,这使得 docker-compose 构建速度相当快。尽管将 vendor 库添加到源代码管理具有库未更新的缺点,并且还会严重污染拉取请求的差异。

是否有介于两者之间的方法,例如缓存?

最佳答案

Is there a way in between, maybe with caching?

是的,有几个。但不要对抗系统/首选方法。

像您已经在做的那样使用$GOPATH/src/MyProject/vendor

adding vendored libraries to source control has the disavantage of libraries not being updated...

这一切都取决于您的团队对存储库的管理。如果每个人都忽视 vendor ,那么它就会变得陈旧。

就我个人而言,我将其作为“每月第一天”的习惯,检查并刷新所有依赖项,运行我们的测试套件,如果没有错误,则更新开发服务器上的 QA 集成测试,并密切关注之后的错误日志发布。像 godepgostatus 这样的工具极大地帮助您的 GOPATH 保持最新状态,您可以使用它们快速更新您的 vendor 文件夹。

只需确保它是专用提交,以便在出现问题时可以快速恢复。

also heavily polluting the diff of pull requests

首先,这只是一个流程任务。我对所有拉取请求强制执行 rebase ,并拒绝所有存储库中的所有合并。这会保留非常干净的 git 历史记录;但是,更重要的是, rebase 会将本地提交移动到 vendor 更新之后。除非有人添加相同的包,否则永远不会发生冲突。这很容易,只需获取最新的即可完成。

听起来似乎还有流程问题需要解决,而不是担心/vendor 管理。

关于go - 使用 Docker 快速构建项目,无需 checkin vendor 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37295127/

相关文章:

Dockerfile 命名 : . dockerfile 与 Dockerfile

mysql - Docker:连接到 mysql 时遇到问题,网络问题?

linux - TERM=dumb 终端必须具备的功能

python - 多处理池在某些运行中丢失变量值

linux - 运行 Docker 镜像

docker - 无法在 Windows 10 中启动 Docker 容器

docker - 我如何在加载Docker容器后不运行docker-compose up的情况下运行它?

validation - 使用 golang 验证 yaml 模式(语义检查)

go - 如何在不使用 DefaultServeMux 的情况下实现 HandlerFunc

postgresql - 如何用Beego制作API测试文件