Jenkins:一个高度分支的构建作业链

Jenkins: a heavily branched chain of build jobs

我们想在 Jenkins 生态系统的基础上建立持续集成和持续部署流程。目前我们正在尝试将我们拥有的所有 Jenkins 构建作业(从源代码到在测试服务器上启动的几个端点进程)放在一起。在我们的案例中,共有三种 build/deployment 进程:

  1. C++ 个项目构建 deb 个包(其中一些是 dependent,其他是 dependencies) ;
  2. Docker 个容器构建镜像;
  3. 正在端点中启动一些进程;

正如您所注意到的,我们面临着由彼此触发的高度分支的工作链。并且任何上游项目的每次更新都必须遍历作业链并触发最终作业 (process I)。所以最好使用某种 Jenkins 插件来:

嗯,对于传递参数,你应该使用 Parameterized Trigger Plugin.

对于更异步的参数传递,您可以使用 EnvInject plugin(它对各种事情都非常有用和灵活,考虑到您的复杂性,可能会证明不管你是否用它来传递参数都是有用的)

至于对照,研究Workflow plugin。它允许在自己的 Groovy 脚本中编写整个执行流程,并进行精细控制。更多链接:
官方 - https://jenkins-ci.org/content/workflow-plugin-10
教程 - https://github.com/jenkinsci/workflow-plugin/blob/c15589f/TUTORIAL.md#pausing-flyweight-vs-heavyweight-executors

正如@slav所说,Workflow插件应该能够处理这种复杂的控制流,包括子任务的并行处理,整个过程中变量的简单处理(只是Groovy局部变量) , 和 Docker support.

您当然可以将整个过程安排在一个 build.gradle(或 Makefile 中)。如果您不介意 运行 同一个 Jenkins 从站上的所有步骤,并且不需要在构建过程中以任何特定方式与 Jenkins 交互或向 Jenkins 报告,那将是合适的。