1. jenkinsfile
Jenkinsfile的是实现Pipeline as Code的核心功能。 该文件用于描述流水线的过程。
以下是一个简单的实例:
pipeline{
//指定运行此流水线的节点
agent { node { label "build"}}
//管道运行选项
options {
skipStagesAfterUnstable()
}
//流水线的阶段
stages{
//阶段1 获取代码 名称自定义
stage("CheckOut"){
steps{
script{
println("获取代码")
}
}
}
stage("Build"){
steps{
script{
println("运行构建")
}
}
}
}
post {
always{
script{
println("流水线结束后,经常做的事情")
}
}
success{
script{
println("流水线成功后,要做的事情")
}
}
failure{
script{
println("流水线失败后,要做的事情")
}
}
aborted{
script{
println("流水线取消后,要做的事情")
}
}
}
}
agent{ } ,指定流水线要运行的节点,可以使用名称或者标签
options{ } ,定义流水线运行时的一些选项
stages{ } ,stages包含多个stage{ },stage包含steps{ }。是流水线的每个步骤
post{ } , 定义好此流水线运行成功或者失败后,根据状态做一些任务
2. pipeline开发工具
选择任意pipeline类型的作业,点击“流水线语法”即可进入pipeline开发工具页面。
常用的工具有:片段生成器、声明式语法生成器、全局变量参考。
2.1 片段生成器
流水线代码片段生成器, 非常好用。在这里可以找到每个插件以及Jenkins内置的方法的使用方法。使用片段生成器可以根据个人需要生成方法,有些方法来源于插件,则需要先安装相关的插件才能使用。
例如:生成一个执行shell脚本命令的代码片段
1、选择 sh :Shell Script
2、输入想要执行的shell命令
3、点击生成流水线脚本
4、使用
进入pipeline项目的一次构建中,点击回放
复制生成的代码到pipeline中
运行后,查看日志
2.2 声明式语法生成器
可以生成声明式流水线语法的语句块。
例如:生成一段指定标签为build的agent
复制到pipeline中,运行查看
2.3 全局变量参考
这些是已经安装的Jenkins插件和Jenkins内置的全局变量清单。
2.3.1 全局变量的使用
流水线中使用pipeline变量
可以输出本次流水线的信息
例如:输出构建id,构建名称,作业地址
调用方式使用 env.
echo "id: ${env.BUILD_ID} name: ${env.BUILD_DISPLAY_NAME} job_url: ${env.JOB_URL}"
2.3.2 jenkins常用变量
根据实际需求选择使用。注意调用方式,${}
变量名 | 含义 |
WORKSPACE | 当前Job构建目录的绝对路径 |
SVN_REVISION | 当前工作区的SVN版本号 |
SVN_URL | 当前工作区的Svn URL |
BUILD_NUMBER | 当前构建的编号,例如“12”等 |
BUILD_ID | 当前构建的版本ID,与构建的BUILD_NUMBER相同 |
BUILD_DISPLAY_NAME | 当前版本的显示名称,默认为“# 1”,即BUILD_NUMBER |
JOB_NAME | 即此版本的项目名称,例如“foo”或“foo / bar” |
JENKINS_HOME | Jenkins用于存储数据的主节点上分配的目录的绝对路径 |
JENKINS_URL | Jenkins的完整URL,如http:// server:port / jenkins /(注意:仅在系统配置中设置Jenkins URL时可用) |
BUILD_URL | 此版本的完整URL,例如http:// server:port / jenkins / job / foo / 15 /(必须设置Jenkins URL) |
JOB_URL | 该作业的完整URL,例如http:// server:port / jenkins / job / foo /(必须设置Jenkins URL) |
BRANCH_NAME | 对于多分支项目,这将被设置为正在构建的分支的名称,例如,如果您希望从master部署到生产环境而不是从feature分支部署;如果对应某种更改请求,则该名称通常是任意的(请参阅下面的CHANGE_ID和CHANGE_TARGET) |
CHANGE_ID | 对于与某种更改请求相对应的多分支项目,这将被设置为更改ID,例如拉取请求编号(如果支持);其他未设置 |
CHANGE_URL | 对于与某种更改请求相对应的多分支项目,这将被设置为更改URL(如果支持);其他未设置 |
CHANGE_TITLE | 对于与某种更改请求相对应的多分支项目,这将被设置为更改的标题(如果支持);其他未设置 |
CHANGE_AUTHOR | 对于与某种更改请求相对应的多分支项目,这将被设置为建议更改的作者的用户名(如果支持);其他未设置 |
CHANGE_AUTHOR_DISPLAY_NAME | 对于与某种更改请求相对应的多分支项目,这将被设置为建议更改的作者的人名(如果支持);其他未设置 |
CHANGE_AUTHOR_EMAIL | 对于与某种更改请求相对应的多分支项目,这将被设置为建议更改的作者的Email地址(如果支持);其他未设置 |
CHANGE_TARGET | 对于与某种更改请求相对应的多分支项目,这将被设置为合并到的目标或者基础分支(如果支持);其他未设置 |
JOB_BASE_NAME | 此构建的项目的短名称剥离文件夹路径,例如“bar / foo”的“foo” |
BUILD_TAG | “jenkins - $ {JOB_NAME} - $ {BUILD_NUMBER}”的字符串。 JOB_NAME中的所有正斜杠(/)都用破折号( - )替换。方便地放入资源文件,jar文件等,以便于识别 |
EXECUTOR_NUMBER | 唯一编号,用于标识执行此构建的当前执行程序(在同一台计算机的执行程序中)。这是您在“构建执行程序状态”中看到的数字,但数字从0开始,而不是从1开始 |
NODE_NAME | 如果构建在代理上,则代理的名称; 如果在主版本上运行,则为“MASTER” |
NODE_LABELS | 节点分配的空白分隔的标签列表 |
GIT_COMMIT | 检出提交的hash值 |
GIT_PREVIOUS_COMMIT | 上次在此分支上构建提交的hash值(如果有) |
GIT_PREVIOUS_SUCCESSFUL_COMMIT | 最后一次成功地在这个分支上构建提交的hash值(如果有的话) |
GIT_BRANCH | 远程分支名称 |
GIT_LOCAL_BRANCH | 本地分支名称 |
GIT_URL | 远程git仓库的URL。如果有多个,将会是GIT_URL_1,GIT_URL_2等 |
GIT_COMMITTER_NAME | 配置的Git提交者名称 |
GIT_AUTHOR_NAME | 已配置的Git作者电子邮件 |
JOB_DESCRIPTION | 显示项目描述 |
CAUSE | 显示谁、通过什么渠道触发这次构建 |
CHANGES | 显示上一次构建之后的变化 showPaths 如果为 true,显示提交修改后的地址。默认false。 |
PROJECT_NAME | 显示项目的全名 |
PROJECT_DISPLAY_NAME | 显示项目的显示名称 |
SCRIPT | 从一个脚本生成自定义消息内容。自定义脚本应该放在"$JENKINS_HOME/email-templates"。当使用自定义脚本时会默认搜索$JENKINS_HOME/email-templatesdirectory目录。其他的目录将不会被搜索。 script 当其使用的时候,仅仅只有最后一个值会被脚本使用(不能同时使用script和template)。 template常规的simpletemplateengine格式模板 |
BUILD_LOG_MULTILINE_REGEX | 按正则表达式匹配并显示构建日志 regex java.util.regex.Pattern 生成正则表达式匹配的构建日志。无默认值,可为空。 |
BUILD_LOG | 显示最终构建日志 maxLines 日志最多显示的行数,默认250行。 |
PROJECT_URL | 显示项目的URL地址 |
BUILD_STATUS | 显示当前构建的状态(失败、成功等) |
BUILD_URL | 显示当前构建的URL地址 |
CHANGES_SINCE_LAST_SUCCESS | 显示上一次成功构建之后的变化 reverse在顶部标示新近的构建。默认false。 |
CHANGES_SINCE_LAST_UNSTABLE | 显示显示上一次不稳固或者成功的构建之后的变化 reverse在顶部标示新近的构建。默认false。 |
ENV | 显示一个环境变量 var- 显示该环境变量的名称。如果为空,显示所有,默认为空。 |
FAILED_TESTS | 如果有失败的测试,显示这些失败的单元测试信息 |
HUDSON_URL | 显示测试的数量 var- 默认“total”。 |