Jenkins-Pipeline简述
一. 什么是Jenkins pipeline:
pipeline在jenkins中是一套插件,主要功能在于,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂发布流程。Pipeline的实现方式是一套Groovy DSL,任何发布流程都可以表述为一段Groovy脚本(jenkinsfile),并且Jenkins支持从代码库直接读取脚本。
二. 关于pipeline :
1. 相关概念:
Step
单一任务,从基础中告诉了Jenkins应该怎么做。例如,要执行shell命令,请make使用以下sh步骤:sh 'make'。当插件扩展Pipeline DSL时,通常意味着插件已经实现了一个新的步骤。
Node
Pipeline执行中的大部分工作都是在一个或多个声明node步骤的上下文中完成的。将工作限制在Node步骤中有两件事情:
通过将项目添加到Jenkins队列来调度要运行的块中包含的步骤。一旦执行器在节点上空闲,步骤就会运行。
创建工作区(特定于该特定Pipeline的目录),可以从源代码控制中检出的文件完成工作。
根据您的Jenkins配置,某些工作空间在一段时间不活动后可能无法自动清除。
Stage
stage是定义整个Pipeline的概念上不同子集的一个步骤,例如:“Build”,“Test”和“Deploy”,许多插件用于可视化或呈现Jenkins Pipeline状态/进度。
pipeline 优势:
通过写代码的形式配置Project,且Jenkins中内置了常用的steps。
实现构建步骤代码化、构建过程视图化。
三. Jenkinsfile 定义格式(eg):
pipeline {
agent { #agent 在哪个node中执行相关任务(默认master),通过label和node上的label进行匹配
label 'test'
}
stages {
stage('Build') { #stage:组成整个pipeline的阶段(自定义功能切分)
steps { #steps: 描述stage中的小步骤,同一个stage中的steps可以并行
sh 'make' #sh:执行指定的shell命令(make)
}
}
stage('Sanity check') {
steps {
input "Does the staging environment check?" #input:手动确认,才会执行后续环节
}
}
stage('Test'){
steps {
sh 'make check'
junit 'reports/**/*.xml' #junit: JUnit plugin插件提供的pipeline步骤,用于汇总测试报告
}
}
stage('Deploy') {
steps {
sh 'make publish'
}
}
}
}
四. pipeline, 流程:
五. pipeline 自动生成代码片段:
Pipeline配有内置的文档功能,可以更轻松地创建不同复杂性的Pipeline。根据Jenkins实例中安装的插件自动生成和更新内置文档。
内置的“Snippet Generator”实用程序有助于为单个步骤创建一些代码,发现插件提供的新步骤,或为特定步骤尝试不同的参数。
如下: 自动生成发邮件的stage:
六. pipeline 全局变量:
除了代码片段生成器之外,Pipeline还提供了一个内置的“ 全局变量引用”。像Snippet Generator一样,它也是由插件动态填充的。与代码段生成器不同的是,全局变量引用仅包含Pipeline提供的变量的文档,这些变量可用于Pipeline。
pipeline默认变量为:
ENV
脚本化Pipeline可访问的环境变量,例如: env.PATH或env.BUILD_ID。请参阅内置的全局变量参考 ,以获取管道中可用的完整和最新的环境变量列表。
PARAMS
将为Pipeline定义的所有参数公开为只读 地图,例如params.MY_PARAM_NAME。
currentBuild
可用于发现有关当前正在执行的Pipeline信息,与如属性currentBuild.result,currentBuild.displayName等等请教内置的全局变量引用 了一个完整的,而且是最新的,可用的属性列表currentBuild。
详细情况可通过自己部署的服务页面查看。