【问题标题】:How to run go command using only vendor dependencies?如何仅使用供应商依赖项运行 go 命令?
【发布时间】:2016-11-22 15:13:00
【问题描述】:

我一直遇到我在本地安装依赖项的问题,它工作正常,我推送到持续集成服务器,然后它中断了,因为我忘记了 godep save ./... 依赖项。

如何运行 go 命令但需要 vendor 导入?

编辑:

我正在使用go1.6。如果第 3 方依赖不解析到供应商,我希望命令失败。换句话说,有没有办法在测试期间停止解析 $GOPATH 中的依赖关系?

我无法更改环境变量,因为我的项目模块都无法解析。如何强制依赖供应商?

【问题讨论】:

  • 这对我来说是一个模糊的问题。你用的是什么版本?有没有考虑试试 go 1.5 及以上版本支持的vendor 目录?
  • @squiguy 已编辑。我希望它更有意义。
  • 这需要您使用供应商的工具来完成。我不知道 godep 是否可以列出丢失的包,但我知道像 govendor 和 glide 这样的其他人可以这样做。如果您想在提交、推送等时检查某些内容,这就是 git hooks 的用途。
  • 我知道这不是建议其他工具的答案,但这就是我使用 gb 的原因。

标签: go vendor


【解决方案1】:

没有办法阻止构建器扫描$GOPATH 以查找包。看来,您使用不是很好的流程来管理依赖项。我建议您使用glide 进行销售。

最推荐的工作流程:

  1. 在glide.yaml 中保留实际的依赖项列表。
  2. 在glide.yaml 发生任何更改后运行glide up。它将所有依赖项安装到vendor 目录并生成具有固定包版本的glide.lock。将 glide.lock 提交给 VCS。 不要手动更改glide.lock。
  3. 不要将 vendor 目录提交到 VCS。
  4. 在您的 CI 上运行 glide install 或构建服务器以安装 glide.lock 到 vendor 的依赖项。
  5. 构建。

从godep 到glide 的迁移可能很容易完成,因为glide 具有将Godeps.json 迁移到glide.yaml 的命令。

【讨论】:

    猜你喜欢
    • 2019-05-04
    • 2019-08-28
    • 1970-01-01
    • 2013-09-03
    • 1970-01-01
    • 1970-01-01
    • 2015-12-11
    • 2020-05-01
    • 2019-09-07
    相关资源
    最近更新 更多