【问题标题】: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 是否可以列出丢失的包,但我知道像 govendorglide 这样的其他人可以这样做。如果您想在提交、推送等时检查某些内容,这就是 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.lockvendor 的依赖项。
  5. 构建。

godepglide 的迁移可能很容易完成,因为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
    相关资源
    最近更新 更多