詹金斯:一个严重分支的建立工作链

时间:2015-05-28 14:59:49

标签: jenkins build continuous-integration docker jenkins-workflow

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

  1. deb个项目构建C++个包(其中一些依赖,其他依赖);
  2. Docker容器构建图像;
  3. 在端点中启动一些进程;
  4. enter image description here

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

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

2 个答案:

答案 0 :(得分:3)

正如@slav所提到的,Workflow插件应该能够处理这种复杂的控制流,包括子任务的并行处理,整个过程中变量的简单处理(只是Groovy局部变量),以及{{3} }。

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

答案 1 :(得分:2)

嗯,要传递参数,您应该使用 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