1、Pipeline介绍
Pipeline 是Jenkins 2.0的精髓,简单来说,就是一套运行于Jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂发布流程。
Pipeline的实现方式是一套Groovy DSL,任何发布流程都可以表述为一段Groovy脚本,并且Jenkins支持从代码库直接读取脚本,从而实现了Pipeline as Code的理念。
Stage: 阶段,一个Pipeline可以划分为若干个Stage,每个Stage代表一组操作。
注意,Stage是一个逻辑分组的概念,可以跨多个Node。
Node: 节点,一个Node就是一个Jenkins节点,或者是Master,或者是Agent,是执行Step的具体运行期环境。
2、pipeline简单示例
配置页面前半部分和freestyle项目一样,只是后半部分少了源码管理、构建和构建后操作这部分内容,这是因为pipeline所有的这些操作都是要通过编写Groovy脚本来实现,大家不要怕,写一些我们常用的操作也不难,下面我们通过具体的例子带大家来学习。我们首先创建一个最简单的例子。
node {
echo 'Hello World'
}
此段代码的作用就是输出Hello World。
保存后执行,查看结果输出了Hello World。
3、Pipeline多stage示例
- 多stage Pipeline Job
我们使用如下的pipeline script:
node {
stage("Pull Code"){
echo "pull code from git "
}
stage("Code Build"){
echo "Buile code"
}
stage('Unit Test'){
echo "Unit Test"
}
}
stage表示阶段,每个阶段里可以执行具体的操作。我们暂时先简单的输出一些文字,后面再介绍其他常用操作。
保存后Job后,执行构建:
我们可以看每一个阶段的执行时间,点击可以查看每一个阶段执行的日志:
2. Pipeline Scipt 执行命令、脚本
我们可以使用如下方式执行命令或者脚本
node {
stage("Pull Code"){
echo "pull code from git"
sh "ls /etc"
}
stage("Code Build"){
echo "Buile code"
sh "/server/scripts/demo.sh"
}
stage('Unit Test'){
echo "Unit Test"
}
}
得到如下结果:
3. 使用生成器生成pipeline脚本
现在我们使用Pipeline Script实现frontend-job,脚本如下:
node {
stage("获取代码"){
echo "获取代码"
git branch: 'dev', url: 'git@192.168.56.12:web-site/frontend.git'
}
stage("打包"){
echo "打包"
sh "tar czf frontend-${BUILD_NUMBER}.tar.gz ./*.html"
}
stage('发布到node1'){
echo "发布到node1"
sh "scp frontend-${BUILD_NUMBER}.tar.gz 192.168.56.11:/data/web"
}
}
构建执行后:
4. 使用Pipeline Script调用己有的Job
我们的目录的是想一次性按顺序自动执行多个Job,我们还是使用生成器:
node {
stage("获取代码"){
echo "获取代码"
git branch: 'dev', url: 'git@192.168.56.12:web-site/frontend.git'
}
stage("打包"){
echo "打包"
sh "tar czf frontend-${BUILD_NUMBER}.tar.gz ./*.html"
}
stage('发布到node1'){
echo "发布到node1"
sh "scp frontend-${BUILD_NUMBER}.tar.gz 192.168.56.11:/data/web"
}
stage("调用frontend Job"){
build 'frontend-job'
}
}
执行结果如下: