-
pipeline{ #声明流水线的特定语法,包含流水线所有的内容 agent any #特定语法,执行区和工作区.为流水线的执行分配一个jenkins的节点 options{ #定义选项 buildDiscarder(logRotator(numToKeepStr: '10') #保留最新的10个构建日志 disableConcurrentBuilds() #规定同一时刻只允许一个pipeline运行 retry(4) #失败之后可以尝试4次 timeout(time:10, unit: 'HOURS') #超时10分钟 } stages{ #定义阶段组 stage('demo'){ #定义demo阶段 steps{ #定义步骤 sh 'echo hello' } } } }
-
pipeline{ #声明流水线的特定语法,包含pipeline所有的内容 agent none #声明流水线的执行分配一个jenkins的节点 stages{ #定义阶段组 stage('stash'){ #定义stash阶段 agent { label "master" } #规定pipeline在master上节点运行 steps{ #定义步骤 writeFile file: "a.txt", text: "$BUILD_NUMBER" #将"$BUILD_NUMBER的内容输入到a.txt中 stash name: "abc", includes: "a.txt" #将a.txt文件保存起来给共同构建的其他步骤或者阶段使用,给他加上标识abc. } } stage('unstash'){ #定义unstash的阶段 agent { label "node" } #规定pipeline运行在node的节点上 steps{ #定义步骤 script{ #定义脚本区域 unstash("abc") #取出stash保存 def content = readFile("a.txt") /#定义变量content echo "${content}" #调用变量 } } } } }
pipeline{ #声明流水线的特定语法,包含pipeline的所有内容
agent any #为流水线执行分配一个jenkins的节点
stages{ #定义阶段
stage('stash'){ #定义stash的阶段
steps{ #定义步骤
timeout(50){ #定义闭包运行步骤超时时间50s
waitUntil{ #一直循环运行闭包内容,直到return true
script{ #定义脚本
def r = sh script: 'curl http://xxx', returnStatus: true #定义变量r等于curl
return (r == 0) #r=0,跳出闭包
}
}
}
retry(10){ #失败之后可以尝试10次
script{ #定义脚本内容
sh script: 'curl http://xxx', returnStatus: true #执行脚本
}
}
sleep(20) //休眠的时间,暂停pipeline 20s
}
}
}
post{ #定义pipeline最后执行的一组任务
always{ #规定pipeline的完成状态
echo "结束job" #输出"结束job"
}
}
}
pipeline{ #声明流水线的特定语法,包含pipeline的所有内容
agent any #声明流水线的特定语法,给jenkins分配的一个节点
triggers{ #定义如何触发pipeline
upstream(upstreamProjects: 'job1,job2', threshold: hudson.model.Result.SUCCESS) #当上游的job1和job2运行成功时,自动触发
}
stages{ #定义阶段组
stage('pre deploy'){ #定义pre deploy组
steps{ #定义步骤
script{ #定义脚本
BRANCHES = sh returnStdout: true, script: 'git branch -r | grep -v HEAD > out.txt; git tag >> out.txt; cat out.txt;'
#脚本的内容,过滤,采用正则,将git tag 的内容输出重定向到文件内部,查看内容,定义变量,值是分支列表
dataMap = input message: '准备发布到哪个环境', ok: '确定', parameters: [choice(choices: ['dev', 'sit', 'prod'], description: '部署环境', name: 'ENV'), choice(choices: "${BRANCHES}", description: '分支', name: 'TAG')], submitterParameter: 'APPROVER'
} #定义变量
}
}
stage("演示一下"){ #定义阶段
steps{ #定义步骤
echo "${dataMap['APPROVER']}" #输出messages
echo "${dataMap['ENV']}"
#用户选择部署环境
echo "${dataMap['TAG']}"
#用户选择分支
}
}
}
}