概述
这篇概述是https://jenkins.io/doc/pipeline/tour/getting-started/ Guided Tour的译文。
Jenkins Pipeline("Pipeline")是Jenkins的插件,支持运行和集成continuous delivery pipelines.
持续delivery的pipeline实际是进程的一种自动化表达,例如从github上获取相应的software直到发布给users和customers.
Jenkins Pipeline提供了一个扩展的工具集合去模块化"从简单到复杂的"delivery pipeline为code. Jenkins Pipeline的定义通常写在Jenkinsfile里. 通常这个Jenkins也是项目code的一部分. Pipeline 和 Using a Jenkinsfile有更多介绍.
Pipelines是由许多步骤组成.这些步骤允许你build, test, deploy应用. Jenkins Pipeline允许你组合这些步骤,使你的automation process模块化.
最简单的Pipeline
一个'step'就是一个操作. 当一个step成功则继续执行下一次操作,失败则整个pipeline fail. 全部steps成功则pipeline成功.
如上图, 一个sh就是一个step.
如上图所示, 针对step还有step wrapper. 这些强大的steps wrapper可以很方便的解决许多问题.例如上图所示的retry和timeout. wrapper也可以互相修饰.例如下图.
pipeline post tasks
通常Pipeline Jenkins job不会由post actions,但是Jenkins Pipeline支持post可以在post之后去完成某些操作.如下图:
定义执行环境
我们在上面所有示例中都可以看到agent指令. 这个agent指令告诉Jenkins哪里和如何执行Pipeline. 且agent是Jenkins Pipeline必须可少的元素.
在这个过程中,会发生以下事情:
只要有可用的executor,所有的steps都会被Jenkins顺序执行
workspace将会包含所有从source control中checked out的文件和Pipeline的格外的working files.
在pipeline中有多种方法定义agents. 在本章我们将只关注如何用临时的container去创建agent.
pipeline设计的非常容易在docker images或者container里去运行。这就使得Pipeline配置agent时非常简单。
当这个Pipeline执行时,Jenkins就会自动启动指定的container并在内部执行相应的steps.
环境变量的使用
我们设置全局的环境变量, 如下图。也可以给每个stage设置环境变量。注意不同阶段的环境变量有不同的作用域。
日志
当你测试你的pipeline时,许多人不想去从console output中去debug失败信息。只要你的test runner可以输出测试结果,Jenkins就可以记录和收集测试结果。收集测试结果需要用到post
该post task则会抓取测试结果并让Jenkins track这些, 分析趋势和报告。 如果Pipeline中含有失败的测试,将会被标注为UNSTABLE, 标记为黄色。 FAILED的话则为红色。
如果有测试失败,则获取编译日志作本地分析和执行是非常有用的。 由于本章节,我也不太懂, 具体可参考https://jenkins.io/doc/pipeline/tour/tests-and-artifacts/
清理和提示
利用post section去作清理和提示工作
也可以发送邮件等
部署
在常见的continuous delivery pipeline包含最少三个步骤, build, test 和 deploy.
稳定的Build和Test stages是任何deployment执行前非常关键的步骤。
也支持人为的参与,最常见的如下图:
通常在stage之间切换时,由其是stages环境,你可以想人为的确认再往后进行。例如,我们需要人为的干预这个应用是不是足够好的去promote到生产环境。这一步骤可以通过‘input’ step实现。如下,'Sanity check' stage被input blocks住,直到人为confirm这个过程才会进行。