一、相关概念说明
1. pipeline
- pipeline 是指从软件版本控制库到用户手中这一过程的自动化表现形式
- jenkins 1.0 只能通过手动操作UI来描述部署流水线
- pipeline是jenkins2.0才开始支持的,可以通过代码来描述部署流水线
2. jenkinsfile
- jenkinsfile 就是一个文本文件,也就是部署流水线概念在jenkins中的表现形式。就像Dockerfile 之与Docker的关系
- jenkins 默认不支持JenkinsFile,我们需要安装pipeline的插件
- 同一个项目中可以按需创建多个jenkinsfile文件
二、pipeline 概述
1. pipeline 支持的语法
jenkins 支持两种语法
脚本式语法
,声明式语法
noted:
- jenkins 团队一开始实现jenkinspipeline的时候采用了Groovy语言作为基础来实现的。所以写脚本式pipeline时候很像是写groovy代码。
- 声明式语法更加符合人的阅读习惯,更简易。声明式语法也是社区推荐的方式
- 以note 为根节点的是脚本式语法,以pipeline为根节点的是声明式语法
2. 创建第一个pipeline程序
- (1)创建一个item
- (2)编写脚本
pipeline{
agent any
stages {
stage('hello,world'){
steps{
script {
println "Hello,World!"
}
}
}
}
}
三、pipeline的组成
结构 | 说明 |
---|---|
pipeline | 代表整条流水线,包含整条流水线的逻辑 |
stages | 代表流水线中一个或多个流水线阶段的容器 |
stage | 代表流水线的阶段。每个阶段必须要有名字 |
steps | 代表阶段中一个或多个具体的步骤的容器 |
agent | 指定流水线执行的位置 |
noted:
以上每一个部分都是必须的,少一个jenkins都会报错的。
四、pipeline支持的指令
- environment: 用于设置环境变量
- tools: 可定义在pipeline 或 stage 部分,会自动下载并安装我们指定的工具,并会设置到环境变量中
- input: 定义在 stage 部分,会暂停pipeline,提示你输入内容
- options: 用于配置jenkins pipeline 本身的选项
- parallel: 并行执行多个step (pipeline 1.2 以后才开始支持)
- parameters:执行前需要传递的参数
- triggers:用于定义pipeline的触发器
- when:当满足定义的条件时,阶段才会执行
- script: 可以写脚本,其实就是groovy代码,写shell或者groovy都是支持的
note:
每个指令都有自己的作用域,如果指令适用的位置不对,会报错
五、pipeline 内置的基础步骤
文件目录相关操作
dir: 切换目录
dir("/var/logs"){
}
deleteDir: 是一个无参步骤,删除的是当前工作目录。通常它的dir步骤一起作用,用于删除指定目录下的内容
dir("/var/logs"){
deleteDir()
}
fileExists: 判断文件是否存在
如果参数是相对路径,默认为workspace目录下
IsUnix: 判断是否为类UNIX系统
如果当前pipeline 运行在一个类UNIX的系统上,会返回为true
pwd:确认当前目录
返回当前目录