去大厅ci任务的二进制文件

时间:2016-12-16 19:00:25

标签: go concourse

在concourse-ci任务中使用go有哪些好的模式。例如,我应该在本地构建具有所有依赖项的文件,并将交叉编译的二进制文件签入到repo中吗?我应该在运行任务之前建立大厅吗?

人们在这里做的例子很棒。管道/任务的公共回购甚至更好。

1 个答案:

答案 0 :(得分:0)

我看到它的方式目前有3个处理go版本的选项:

  1. 使用vendoring
  2. 明确声明依赖关系为大厅资源
  3. 维护已包含所需依赖项的docker镜像
  4. 所有选项都有利弊。第一个选项目前是我最喜欢的,因为处理依赖项的责任取决于项目维护者,并且有一种非常明确的方式来查看正在使用哪些版本/版本的依赖项 - 即只检查出售工具配置 - 但它确实强迫您在项目的回购中拥有所有依赖项代码。

    第二种选择遵循go"哲学"总是跟踪主人,但它可能会导致较慢的构建(大厅需要定期检查每一个资源),并可能因为依赖关系的变化而导致突然破坏。

    第三个选项允许您隐式修复docker镜像中依赖项的修订版,在这方面它与第一个类似,但它需要维护docker镜像(并不一定意味着每个项目,但它可能意味着多个项目,具体取决于使用此选项的项目数量,以及它们之间是否存在冲突的依赖项版本)