主题
一、Jenkins Build User Vars 插件使用手册
1.1 插件简介
Build User Vars Plugin 是一个 Jenkins 插件,用于在构建过程中获取触发构建的用户信息。该插件可以提供构建用户的各种属性,如用户名、用户 ID、用户邮箱等,这些信息可以在构建过程中被引用,用于日志记录、邮件通知、构建描述等场景。
- 提供多种构建用户相关变量,如用户 ID、用户全名、用户邮箱等
- 支持在 Pipeline 脚本和自由风格项目中使用
- 可与其他插件(如 Email Extension、Build Name Setter 等)结合使用,增强通知和记录功能
- 适用于需要记录或通知构建触发者信息的场景
1.2 插件安装
- 官方地址: https://plugins.jenkins.io/build-user-vars-plugin/
- 安装方式: 系统管理 -> 管理插件 -> 可选插件 ->
Build User Vars Plugin
-> 直接安装
1.3 可用变量
安装插件后,以下环境变量将在构建过程中可用:
变量名 | 描述 |
---|---|
BUILD_USER | 触发构建的用户的全名 |
BUILD_USER_FIRST_NAME | 触发构建的用户的名字 |
BUILD_USER_LAST_NAME | 触发构建的用户的姓氏 |
BUILD_USER_ID | 触发构建的用户的 ID(登录名) |
BUILD_USER_EMAIL | 触发构建的用户的邮箱地址 |
1.4 使用方法
1.4.1 在 Pipeline 中使用
在 Pipeline 脚本中,需要使用 wrap
函数将需要访问用户变量的代码块包装起来:
groovy
pipeline {
agent any
stages {
stage('显示构建用户信息') {
steps {
wrap([$class: 'BuildUser']) {
script {
echo "构建由以下用户触发:"
echo "用户全名: ${env.BUILD_USER}"
echo "用户 ID: ${env.BUILD_USER_ID}"
echo "用户邮箱: ${env.BUILD_USER_EMAIL}"
echo "用户名: ${env.BUILD_USER_FIRST_NAME}"
echo "用户姓: ${env.BUILD_USER_LAST_NAME}"
}
}
}
}
}
}
1.4.2 在 post 部分使用
通常在构建完成后的通知中,我们需要获取构建用户信息:
groovy
pipeline {
agent any
stages {
stage('构建') {
steps {
echo "执行构建步骤..."
}
}
}
post {
success {
wrap([$class: 'BuildUser']) {
script {
echo "构建成功!由 ${env.BUILD_USER} 触发的构建已完成。"
}
}
}
failure {
wrap([$class: 'BuildUser']) {
script {
echo "构建失败!请通知 ${env.BUILD_USER} (${env.BUILD_USER_EMAIL}) 检查构建日志。"
}
}
}
}
}
1.5 实际应用场景
1.5.1 与邮件通知结合
结合 Email Extension Plugin 发送包含构建用户信息的邮件通知:
groovy
pipeline {
agent any
stages {
stage('构建') {
steps {
echo "执行构建步骤..."
}
}
}
post {
always {
wrap([$class: 'BuildUser']) {
script {
def userInfo = "${env.BUILD_USER ?: '系统自动'} (${env.BUILD_USER_EMAIL ?: 'admin@srebro.cn'})"
emailext (
subject: "构建 ${currentBuild.currentResult}: ${env.JOB_NAME} #${env.BUILD_NUMBER}",
body: """
<p>构建状态: ${currentBuild.currentResult}</p>
<p>构建触发者: ${userInfo}</p>
<p>构建链接: <a href="${env.BUILD_URL}">${env.BUILD_URL}</a></p>
<p>构建日志: <a href="${env.BUILD_URL}console">${env.BUILD_URL}console</a></p>
""",
to: "${env.BUILD_USER_EMAIL}",
mimeType: 'text/html'
)
}
}
}
}
}
1.5.2 与构建名称和描述结合
结合 Build Name and Description Setter 插件,在构建名称和描述中包含用户信息:
groovy
pipeline {
agent any
stages {
stage('构建') {
steps {
echo "执行构建步骤..."
}
}
}
post {
always {
wrap([$class: 'BuildUser']) {
script {
// 设置构建名称
buildName "#${BUILD_NUMBER} - ${env.BUILD_USER_ID}"
// 设置构建描述
buildDescription "构建触发者: ${env.BUILD_USER}<br/> 触发者邮箱: ${env.BUILD_USER_EMAIL} <br/> 构建状态: ${currentBuild.currentResult} <br/> 构建时间: ${new Date().format("yyyy-MM-dd HH:mm:ss")}<br/>"
}
}
}
}
}
1.6 完整 Pipeline 示例
以下是一个完整的 Pipeline 示例,展示了如何在实际项目中使用 Build User Vars 插件:
groovy
pipeline {
agent any
stages {
stage('构建') {
steps {
echo "执行构建步骤..."
}
}
}
post {
always {
wrap([$class: 'BuildUser']) {
script {
//获取构建者名称,邮箱,如果邮箱没有设置,就默认设置为admin@srebro.cn
def userInfo = "${env.BUILD_USER ?: '系统自动'} (${env.BUILD_USER_EMAIL ?: 'admin@srebro.cn'})"
//设置构建名称
buildName "#${BUILD_NUMBER} - ${env.BUILD_USER_ID}"
//设置构建描述
buildDescription "构建触发者: ${env.BUILD_USER}<br/> 触发者邮箱: ${env.BUILD_USER_EMAIL} <br/> 构建状态: ${currentBuild.currentResult} <br/> 构建时间: ${new Date().format("yyyy-MM-dd HH:mm:ss")}<br/>"
emailext (
subject: "构建 ${currentBuild.currentResult}: ${env.JOB_NAME} #${env.BUILD_NUMBER}",
body: """
<p>构建状态: ${currentBuild.currentResult}</p>
<p>构建触发者: ${env.BUILD_USER}</p>
<p>构建链接: <a href="${env.BUILD_URL}">${env.BUILD_URL}</a></p>
<p>构建日志: <a href="${env.BUILD_URL}console">${env.BUILD_URL}console</a></p>
""",
to: "${env.BUILD_USER_EMAIL}",
mimeType: 'text/html'
)
}
}
}
}
}
1.7 注意事项
权限设置:确保 Jenkins 用户有足够的权限获取用户信息。
非用户触发的构建:对于由定时任务或上游项目触发的构建,用户变量可能为空。在使用这些变量时,应该添加适当的空值检查或默认值。
变量作用域:用户变量只在
wrap([$class: 'BuildUser'])
块内可用,超出此范围将无法访问。与其他插件兼容性:该插件与大多数 Jenkins 插件兼容,但在某些特殊场景下可能需要额外配置。
安全考虑:用户信息属于敏感数据,在日志和通知中使用时应注意信息安全。