1. 为什么使用 Pipeline ? 
Jenkins 支持许多模式的任务方式。使用 Pipeline 流水线 是因为它具有强大的功能,例如: 支持多个功能自动化用例聚合, 逐步完善自动化应用用例,做到 “小步快跑,快速迭代”循序渐进的过程,从而实现持续集成到全面交付流水线过程。

- 核心: 模板构建,组件化应用,面向对象思维。
 - 主要特性: 
- 代码化 : 流水线是在代码中实现的,通常会存放到源代码控制,使团队具有编辑、审查和更新他们项目的交付流水线的能力。
 - 耐用性:流水线可以从Jenkins的master节点重启后继续运行。
 - 可暂停的:流水线可以由人功输入或批准继续执行流水线。
 - 解决复杂发布: 支持复杂的交付流程。例如循环、并行执行。
 - 可扩展性: 支持扩展DSL和其他插件集成。
 
 
2. Pipline 定义 
关于Jenkins流水线的运行我们可以抽象化,如图:

- 把流水线(pipeline)想象成深圳地铁5号线。
 - 把流水线的阶段(stage)想象成地铁5号线的每一个站点。
 - 把流水线脚本(jenkinsfile)想象成地铁线路图。
 
这就是流水线的多样性,每条线路都有不同的站点。
现在地铁(Jenkins)已经有了,我们需要设计地铁的运行线路图(Jenkinsfile),在线路图中指定要经过的站点(stages)。
这下你是否已经知道我们要运行一条流水线,需要先做什么呢?
3. Jenkinsfile 两种语法 
设计地铁线路 (Jenkinsfile) 的 两种方法
- 声明式
- 功能强大,它可以包含脚本式。
 - 代码阅读性好。
 
 - 脚本式
- 实现方法多,提供更丰富的语法特性。
 
 
4. 了解 Jenkinsfile 组成部分 
使用 agent{} :指定node节点/workspace,定义好此流水线在某节点运行。
指定 options{}:运行选项,定义好此流水线运行时的一些选项,例如输出日志的时间。
指定 stages{}:stages包含多个stage,stage包含steps,是流水线的每个步骤。
指定 post{}:定义好此流水线运行成功或者失败后,根据状态做一些任务。
groovy
pipeline {
   
   // 1.指定运行流水线的节点, any 代码任务节点
   agent any
   // 2.流水线的阶段
   stages {
      
	  // 阶段1 获取代码
      stage('CheckOut') {
         steps {
            script {
			   println("获取代码")
			}
         }
      }
	  
	  // 阶段2 构建
	  stage("Build") {
		steps {
			script {
			   println("运行构建")
			}
		}
	  }
   }
   
   // 3.根据流水线状态做一些任务
   post {
      always {
	     script {
			println("流水线结束后,经常做的事情")
		 }
	  }
	  
	  success {
		 script {
			println("流水线成功后, 要做的事情")
		 }
	  }
	  
	  failure {
		 script {
		   println("流水线失败后, 要做的事情")
		 }
	  }
	  
	  aborted {
		 script {
		   println("流水线取消后, 要做的事情")
		 } 	
	  } 
   }
   
}5. Pipeline 流水线运行效果 
- Jenkins 演示效果 和 Jenkins BlueOncean 演示效果
 

