我正在尝试为我们的管道自动化设置脚本化的JenkinsFile,并希望将configFileProvider用于maven。这样,我最终在脚本化的JenkinsFile中的所有Maven阶段中定义了此块。有没有一种方法可以在脚本中只定义一次并在所有阶段中引用它。到目前为止,我的样本JenkinsFile看起来像这样:-
node {
def mvnHome
def mvnSettings
stage('Prepare') {
mvnHome = tool 'maven-3.5.4'
}
stage('Checkout') {
checkout scm
}
stage('Build'){
configFileProvider(
[configFile(fileId: '**********', variable: 'MAVEN_SETTINGS')]) {
sh "'${mvnHome}/bin/mvn' -s $MAVEN_SETTINGS install"
}
}
stage('Integration Test') {
sh "'${mvnHome}/bin/mvn' -Dmaven.test.failure.ignore clean verify"
}
stage('Sonar') {
configFileProvider(
[configFile(fileId: '**********', variable: 'MAVEN_SETTINGS')]) {
sh "'${mvnHome}/bin/mvn' -s $MAVEN_SETTINGS sonar:sonar"
}
}
stage('Packaging') {
configFileProvider(
[configFile(fileId: '**********', variable: 'MAVEN_SETTINGS')]) {
sh "'${mvnHome}/bin/mvn' -s $MAVEN_SETTINGS package"
}
}
stage('Deploy') {
configFileProvider(
[configFile(fileId: '**********', variable: 'MAVEN_SETTINGS')]) {
sh "'${mvnHome}/bin/mvn' -s $MAVEN_SETTINGS deploy}"
}
}
}
我从某个地方得知,我可能可以在不同阶段使用每个循环来迭代相同类型的脚本,但是为此,我将必须创建一个列表(JAVA COLLECTION),并且要做一个这样的示例:-< / p>
node {
def buildStage=[Build,Sonar,Packaging,Deploy]
buildStage.each {x ->
println "$x"
stage('$x') {
configFileProvider(
[configFile(fileId: '**********', variable: 'MAVEN_SETTINGS')]) {
sh "'${mvnHome}/bin/mvn' -s $MAVEN_SETTINGS $x"
}
}
}
}
但是由于我对此并不熟悉,所以我正在寻找示例脚本的帮助,以帮助我实现这一点。使用上述方法是否可以使用工作脚本?
这里的任何帮助将一如既往。
干杯
阿什利