jenkins:一个重要的分支链build设工作

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

  1. C++项目构builddeb包(其中一些是依赖项 ,另一些是依赖项 );
  2. Docker容器构build图像;
  3. 在端点中启动一些进程;

在这里输入图像说明

正如你所看到的,我们面临着彼此触发的大量分工。 任何上游项目的更新都必须贯穿整个工作链,并触发最终的工作( process I )。 所以这将是很好的使用某种Jenkins插件,将会:

  • 控制这样一个复杂的工作结构(我试图使用Build Pipeline Plugin ,我觉得这个工具适合“线性”工作链);
  • 提供在作业环境之间传递参数的干净方式。

那么,为了传递参数,你应该使用Parameterized Trigger Plugin

对于一个更加asynchronous的parameter passing,你可以使用EnvInject插件 (这对于各种事情来说是非常有用和灵活的,考虑到你的复杂性,无论你是否使用它来传递参数,都可能是有用的)

至于控制,研究到工作stream插件 。 它允许将整个执行stream程编写在自己的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插件应该能够处理这种复杂的控制stream程,包括子任务的并行处理,整个stream程中简单的variables处理(只是Groovy局部variables)和Docker支持 。

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