在 Jenkins 中,通过共享库(Shared Libraries)集成 Maven、Ant、Gradle 和 Node.js 构建工具可以进一步提升代码的复用性和维护性。下面展示如何在共享库中封装这些构建工具的常用操作,以简化 Pipeline 脚本。
创建共享库
首先,确保你已按照之前介绍的方式创建了一个 Jenkins 共享库。在共享库的 vars
目录下,为每种构建工具创建对应的Groovy脚本。
Maven 示例
vars/mavenBuild.groovy
def call(Map config = [:]) {
def goals = config.goals ?: 'clean package'
def mavenOpts = config.mavenOpts ?: '-Xmx512m'
withMaven(maven: 'Maven_3', mavenOpts: mavenOpts) {
sh "mvn ${goals}"
}
}
Ant 示例
vars/antBuild.groovy
def call(Map config = [:]) {
def target = config.target ?: 'build'
withAntHome() {
bat '"${tool name: \'Ant\', type: \'hudson.tools.AntInstallation\'}\\bin\\ant.bat" ${target}' // Windows
sh "${tool name: 'Ant', type: 'hudson.ant.AntInstallation'}/bin/ant ${target}" // Unix-like
}
}
Gradle 示例
vars/gradleBuild.groovy
def call(Map config = [:]) {
def tasks = config.tasks ?: 'build'
def gradleOpts = config.gradleOpts ?: '-Xmx512m'
withGradle(gradleOpts: gradleOpts) {
sh "gradle ${tasks}"
}
}
Node.js 示例
vars/nodeBuild.groovy
def call(Map config = [:]) {
def script = config.script ?: 'npm install && npm run build'
def nodeJSInstallation = config.nodeJSInstallation ?: 'node-14.17.0'
nodejs(nodeJSInstallation: nodeJSInstallation) {
sh script
}
}
使用共享库中的构建工具方法
在你的 Jenkinsfile 中,通过导入共享库并调用上述定义的方法,可以简化构建步骤的编写。
@Library('my-shared-lib') _
pipeline {
agent any
stages {
stage('Maven Build') {
steps {
mavenBuild(goals: 'clean install')
}
}
stage('Ant Build') {
steps {
antBuild(target: 'dist')
}
}
stage('Gradle Build') {
steps {
gradleBuild(tasks: 'build')
}
}
stage('Node.js Build') {
steps {
nodeBuild(script: 'npm ci && npm run build')
}
}
}
}
通过这种集成方式,你的 Jenkins Pipeline 脚本变得更加简洁、易读,同时也便于在团队内部共享和维护构建逻辑。