背景
升级Jenkins过程中不小心导致流水线配置文件job目录丢失, 重新配置流水线后所有流水线构建号码都从1
开始构建了, 然而我们的产品关联了jenkins构建号,重新从1
构建会导致各种问题.
解决方案
在Jenkinsfile文件中指定流水线的构建号为一个不存在的数字, 这样就不会冲突了. 用Jenkins.get().getItemByFullName("${env.JOB_NAME}").updateNextBuildNumber(10000)
可以更新当前流水线的下一次构建号. 注意需要修改自己指定构建号例如10000
, 在第二次构建时构建号就会变成10000
Jenkinsfile 如下:
pipeline {agent anystages {stage('修改构建号') {steps {script {Jenkins.get().getItemByFullName("${env.JOB_NAME}").updateNextBuildNumber(10000)}}}} }
脚本命令行里面可以直接执行Jenkins.get().getItemByFullName("你的job名称").updateNextBuildNumber(10000)
来更新单个job的构建号.
或者也可以定义成函数
@NonCPS
def updateBuildNumber(build_number) {def job = Jenkins.instance.getItemByFullName("${env.JOB_NAME}", Job.class)job.nextBuildNumber = build_numberjob.saveNextBuildNumber()build env.JOB_NAMEreturn true
}
pipeline {agent anystages {stage('修改构建号') {steps {script {updateBuildNumber(10000)}}}} }
参考
- Set build number for Jenkins workflow (pipeline) builds
- How to set next build number in Pipeline job?