CI/CD 流程里 Jenkins 的“构建历史”是高频信息源。比起翻构建日志,把构建人、版本分支这类关键信息直接显示在历史列表里,定位问题快得多,流水线可读性也更好。这篇记录怎么用 currentBuild 实现这件事。
写 Pipeline 脚本
用 Pipeline 方式建了个演示环境,在取代码阶段拿到运行用户,写进 currentBuild.description:
#!groovy
pipeline {
agent{
any
}
stages {
stage("GetCode"){
steps {
script {
println("GetCode")
wrap([$class: 'BuildUser']) {
def user = env.BUILD_USER
println("${user}")
currentBuild.description = "构建人:${user}"
}
}
}
}
stage('源码构建') {
steps{
script {
println("源码构建")
}
}
}
stage('镜像构建') {
steps{
script {
println("镜像构建")
}
}
}
stage('镜像上传') {
steps{
script {
println("镜像上传")
}
}
}
}
post {
success {
script {
println("流水线执行成功")
}
}
failure {
script {
println("流水线执行失败")
}
}
aborted {
script {
println("本次镜像构建被中止")
}
}
}
}
两个前提:要取到当前任务的 BUILD_USER,Jenkins 必须先装 build user vars 插件;核心是 currentBuild 这个全局变量,其余可用参数可以直接访问 ${your_jenkins_url}/pipeline-syntax/globals 查。
创建任务并引用脚本
在 Jenkins 上新建一个 Pipeline 任务:

把脚本粘贴进 Pipeline definition:


看效果
运行一次构建,构建历史里就带上“构建人:xxx”的描述了:

注意事项
description 每次构建会被覆盖写,多人触发的任务里它会准确反映当次触发人,前提是触发方式带用户身份;用 SCM 轮询或定时触发的构建拿不到 BUILD_USER,脚本里要加空值判断,不然描述会变成“构建人:null”。同样的写法可以塞进分支名、版本号,字段够用,别把历史行撑爆。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END


















暂无评论内容