Jenkins 语法
Jenkinsfile
Jenkinsfile 组成
指定node节点/workspace
指定运行选项
指定运行选项
指定stages阶段
指定构建后操作
#指定node 节点/workspace
#agent
pipeline {
agent { node { label "master" // 指定运行节点的标签或者名称
customWorkspace "${workspace}" //指定运行工作目录(可选)
}
}
options{
timestamps() // 日志会有时间
skipDefaultCheckout() //删除模式checkout scm 语句
disableConcurrentBuilds() // 禁止并行
timeout(time: 1,uint: 'HOURS') //流水线超时设置1h
}
#Pipeline 定义-stage
指定stages 阶段(一个或多个)
模板添加了三个阶段
* GetCode
* Build
* CodeScan
stage {
//下载代码
stage ("GetCode") { // 阶段名称
steps { //步骤
timeout(time:5,uint: "MINUTES") { //步骤超时时间
script{ // 填写运行代码
println(‘获取代码’)
}
}
}
}
}
//构建
stage("Build") {
steps{
timeout(time:20,uint:"MINUTES"){
script{
println('应用打包')
}
}
}
}
//代码扫描
stage("CodeScan"){
steps{
timeout(time:30, unit:"MINUTES"){
script{
print("代码扫描")
}
}
}
}
#Pipeline 定义-post
指定构建后操作
解释:
always{}: 总是执行脚本片段
success{}: 成功后执行
failure{}: 失败后执行
aborted{}: 取消后执行
currendBuild 是一个全局变量
description 构建描述
//构建后操作
post{
always {
script{
println("always")
}
}
}
success{
script{
currentBuild.description += "\n 构建成功!"
}
}
failure {
script{
currentBuild.description += "\n构建失败"
}
}
aborted {
script {
currentBuild.description +="\n 构建取消"
}
}
Pipeline 语法-agent
agent (代理)
agent 指定了流水线的执行节点
参数:
any 在任何可用的节点上执行pipeline
node 没有指定agent的时候默认
label 指定标签上的节点运行Pipeline
node 允许额外的选项
这两种是一样的
agent {node {label 'labelname'}}
agent { label 'labelname'}
post
定义一个或多个steps,这些阶段根据流水线的完成情况而运行(取决于post部分的位置),post支持以下post-condition块中其中之一;always,changed,failure,success,unstable和aborted. 这些条件块允许在post 部分的步骤执行取决于流水线或阶段的完成状态
always 无论流水线或者阶段的完成状态
changed 只有当流水线或者阶段完成状态与之前不同时
failure 只有当流水线或者阶段状态为"failure"运行
success 只有当流水线或者阶段状态为"success"运行
unstable 只有当流水线或者阶段状态为"unstable"运行,如测试失败
aborted 只有当流水线或者阶段状态为"aborted"运行, 手动取消
stages(阶段)
包含一系列一个或多个stage指令,建议stages至少包含一个stage 指定用于连续交付过程中的每个离散部分,比如构建 测试 和部署
pipeline {
agent any
stages {
stage('Hello') {
steps {
echo 'Hello World'
}
}
}
}
steps (步骤)
step 是每个阶段中要执行的每个步骤
pipeline {
agent any
stages {
stage('Example') {
steps {
echo 'Hello World'
}
}
}
}
参数
trigger 触发器
triggers { cron ( 'H */4 * * 1-5 ')}
tool
获取通过自动安装或手动放置工具的环境变量。支持maven/jdk/gradle,工具的名称必须在系统设置-全局工具配置中定义
when
when 指令允许流水线根据给定的条件决定是否应该执行阶段。 when指令必须包含至少一个条件。如果when 指令包含多个条件,所有的条件必须返回true,阶段才能执行
when {branch 'master' }
script
script 步骤需要[scripted-pipline ] 块并在声明式中执行。对于大多数用例来说,应该声明式流水线中的"脚本"步骤是不必要的,但是它可以提供一个有用的"逃生出口",非平凡的规模和/或复杂性的script 块应该被转移到共享库