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 选择模块,输出参数并在构建中生成不同制品文件。