本质上,jenkins是一个自动化引擎,它支持许多自动模式。流水线向Jenkins添加了一组强大的工具,支持用例、简单的持续集成到全面的持续交付流水线。 经过对一系列的发布任务创建标准的模板,用户能够利用更多流水线的特性node
好比:ide
代码化: 流水线是在代码中实现的,一般会存放到源代码控制,使团队具备编辑、审查和更新他们项目的交付流水线的能力。
耐用性:流水线能够从Jenkins的master节点重启后继续运行。
可暂停的:流水线能够由人功输入或批准继续执行流水线。
解决复杂发布: 支持复杂的交付流程。例如循环、并行执行。
可扩展性: 支持扩展DSL和其余插件集成。
构建一个可扩展是Jenkins的核心价值,流水线能够经过ShareLibrary的方式来扩展。工具
Jenkins的Pipeline经过Jenkinsfile进行描述(相似于Dockerfile)
Jenkinsfile是Jenkins的特性(pipeline as code)
Pipeline是Jenkins的核心功能,提供一组可扩展的工具。
经过Pipeline 的DSL语法能够完成从简单到复杂的交付流水线实现。post
Jenkinsfile使用两种语法进行编写,分别是声明式和脚本式。
声明式和脚本式的流水线从根本上是不一样的。
声明式是jenkins流水线更友好的特性。
脚本式的流水线语法,提供更丰富的语法特性。
声明式流水线使编写和读取流水线代码更容易设计。测试
使用agent{},指定node节点/workspace(定义好此流水线在某节点运行)
指定options{}运行选项(定义好此流水线运行时的一些选项,例如输出日志的时间)
指定stages{}(stages包含多个stage,stage包含steps。是流水线的每一个步骤)
指定post{}(定义好此流水线运行成功或者失败后,根据状态作一些任务)ui
pipeline { agent any stages { stage('Hello') { steps { echo 'Hello World' } } } }
(若是没有BlueOcean图标,须要自行在插件中心安装插件)spa
pipeline{ //指定运行此流水线的节点 agent { node { label "master"}} //流水线的阶段 stages{ //阶段1 获取代码 stage("CheckOut"){ steps{ script{ println("获取代码") } } } stage("Build"){ steps{ script{ println("运行构建") } } } } post { always{ script{ println("流水线结束后,常常作的事情") } } success{ script{ println("流水线成功后,要作的事情") } } failure{ script{ println("流水线失败后,要作的事情") } } aborted{ script{ println("流水线取消后,要作的事情") } } } }