18.6.2 常用构建与Pipeline类插件
本节聚焦 Jenkins 常用构建与 Pipeline 类插件的实践,覆盖安装、配置、示例 Pipeline、排错与练习,帮助建立标准化构建链路。插件选择原则:与现有构建工具链兼容、对声明式/脚本式 Pipeline 支持稳定、维护活跃、可审计与可回滚。
原理草图(插件与构建流程关系):
插件安装与更新示例(CLI 方式,适合批量管理):
# 1) 安装 Jenkins CLI(假设 Jenkins 运行在 http://jenkins.local:8080)
wget http://jenkins.local:8080/jnlpJars/jenkins-cli.jar
# 2) 列出已安装插件
java -jar jenkins-cli.jar -s http://jenkins.local:8080/ -auth admin:password list-plugins
# 3) 安装常用构建与 Pipeline 插件
java -jar jenkins-cli.jar -s http://jenkins.local:8080/ -auth admin:password install-plugin \
workflow-aggregator \
pipeline-model-definition \
pipeline-utility-steps \
timestamper \
build-timeout \
ansiColor \
ws-cleanup \
extended-choice-parameter \
build-user-vars-plugin
# 4) 安装后安全重启
java -jar jenkins-cli.jar -s http://jenkins.local:8080/ -auth admin:password safe-restart
关键插件能力与最小可用示例(声明式 Pipeline):
// Jenkinsfile(位于仓库根目录)
// 需要插件:Pipeline、Declarative、Utility Steps、Build Timeout、AnsiColor、Timestamper、Workspace Cleanup
pipeline {
agent any
options {
timestamps() // Timestamper 插件
ansiColor('xterm') // AnsiColor 插件
timeout(time: 10, unit: 'MINUTES')// Build Timeout 插件
buildDiscarder(logRotator(numToKeepStr: '10'))
}
parameters {
choice(name: 'ENV', choices: ['dev', 'staging', 'prod'], description: '部署环境')
string(name: 'VERSION', defaultValue: '1.0.0', description: '版本号')
}
stages {
stage('Checkout') {
steps {
checkout scm
}
}
stage('Build') {
steps {
sh '''
echo "ENV=$ENV VERSION=$VERSION"
echo "模拟构建..."
mkdir -p target && echo "artifact-${VERSION}" > target/app.txt
'''
}
}
stage('Archive') {
steps {
archiveArtifacts artifacts: 'target/**', fingerprint: true
}
}
}
post {
always {
cleanWs() // Workspace Cleanup 插件
}
}
}
Pipeline Utility Steps 实用示例(读取/写入 JSON、文件校验):
pipeline {
agent any
stages {
stage('Prepare') {
steps {
script {
def data = [version: "1.0.0", env: "dev"]
writeJSON file: 'build.json', json: data
def d = readJSON file: 'build.json'
echo "build.json => ${d}"
writeFile file: 'checksum.txt', text: "OK"
}
}
}
}
}
扩展参数化构建示例(Extended Choice Parameter 插件):
// 在 Jenkins Job 配置中添加参数:
// 类型选择 "Extended Choice Parameter"
// name: MODULES
// type: Multi Select
// value: api,web,worker
// defaultValue: api
// 在 Pipeline 中读取:
pipeline {
agent any
stages {
stage('Show Params') {
steps {
echo "Selected MODULES=${params.MODULES}" // 如: api,web
}
}
}
}
多语言构建插件的常见用法(Maven/NodeJS/Go/Python):
pipeline {
agent any
tools {
maven 'maven-3.8' // Jenkins 全局工具配置中定义
nodejs 'node-18'
}
stages {
stage('Maven Build') {
steps { sh 'mvn -v && mvn clean package -DskipTests' }
}
stage('Node Build') {
steps { sh 'node -v && npm ci && npm run build' }
}
}
}
常见排错清单与命令:
# 1) 插件安装失败或依赖缺失
# 解决:查看 Jenkins 日志,确认网络与更新中心
tail -f /var/log/jenkins/jenkins.log
# 2) 插件冲突或报错 NoSuchMethodError
# 解决:查看插件版本,必要时回滚或更新核心版本
java -jar jenkins-cli.jar -s http://jenkins.local:8080/ -auth admin:password list-plugins | grep -E "workflow|pipeline"
# 3) Pipeline 步骤不存在(MissingMethodException)
# 解决:确认插件是否安装与启用,如 cleanWs 需要 ws-cleanup
练习:
1. 安装 workflow-aggregator、pipeline-model-definition、pipeline-utility-steps,并创建一个 Jenkinsfile 完成“构建+归档+清理”。
2. 增加 Build Timeout 与 Timestamper,观察日志带时间戳与超时中断的效果。
3. 使用 Extended Choice Parameter 选择模块,输出参数并在构建中生成不同制品文件。