Jenkins2.0中最大的一个特性就是Pipeline,实际使用中Pipeline已经超越了咱们对jenkins自己的理解,可能在以前咱们大多数把Jenkins当作是一个持续集成的工具。可是在Jenkins2.0中,Jenkins完成了CI到CD的华丽转身,并且由于Jenkins的开放性,随着一些测试plugin的加入,CT持续测试也能够在Jenkins Pipeline上实现。以及多节点的组合式任务,使得Jenkins能够实现复杂的发布流程。node
Pipeline,简而言之,就是一套运行于Jenkins上的工做流框架,将本来独立运行于单个或者多个节点的任务链接起来,实现单个任务难以完成的复杂流程编排与可视化。git
官方资料:https://jenkins.io/2.0/docker
咱们能够将Node称为是节点或者Agent。节点能够执行某一阶段(Stage)、某几阶段(Stage)乃至整个Pipeline,就看咱们Pipeline中在哪里去定义Node。咱们能够将Node做为Jenkins Master的Slave 节点来分担Master节点的构建以及执行job负载。也能够将Node当作测试、部署的专用节点。好比咱们能够增长一个Ansible节点用来作自动化部署,增长 一个Jmeter节点用来作性能测试。架构
咱们能够将Stage称为阶段,每个Stage为Pipeline中的一个小部分,而每一个Stage中最小部分为Step。好比一个简单的持续集成Pipeline。咱们能够分为两个Stage,第一个是git clone code,把最新代码拉下来,第二个为Build,即利用Ant、Maven等工具进行代码编译构建。框架
咱们能够把Step称为步骤,一个或者多个Step将会组成一个Stage,Step是Pipeline组成的最小单位。一个Step能够很简单,好比echo “hello”。也能够很复杂,好比sh‘’ “docker build -t jenkins:master ”。工具
Pipeline脚本是由Groovy语言实现性能
pipeline { agent any //定义使用哪一个Node进行Job的执行 stages { stage('Build') { //定义Build的stage steps { //定义Build的stage下面的全部step // } } stage('Test') { steps { // } } stage('Deploy') { steps { // } } } }
node { //定义使用哪一个Node进行Job的执行与声明式中的Agent等同。 stage('Build') { //定义Build的stage步骤 // //定义Build的stage下面的全部step步骤 } stage('Test') { // } stage('Deploy') { // } }
Jenkins贴心的为咱们提供了快速生成脚本的功能测试
一般推荐在 Jenkins中直接从源代码控制(SCM)中载入Jenkinsfile Pipeline,这样能够对Jenkinsfile也进行分支管理以及不一样版本的管理。ui
更多Pipeline的使用和说明请参照官方文档:https://jenkins.io/doc/book/pipeline/spa