我试图为我们的管道自动化设置脚本JenkinsFile,并希望在maven中使用configFileProvider,因此,我最终在脚本JenkinsFile的所有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}"
}
}
}
如果有任何帮助或建议,我们将一如既往地感激不尽。
干杯。
阿什利
既然是脚本,你就不必遵循一个僵硬的结构,虽然不好看,但你可以改变顺序,把阶段放在configFileProvider里。
configFileProvider(
[configFile(fileId: '**********', variable: 'MAVEN_SETTINGS')]) {
stage('Build'){
sh "'${mvnHome}/bin/mvn' -s $MAVEN_SETTINGS install"
}
stage('Integration Test') {
sh "'${mvnHome}/bin/mvn' -Dmaven.test.failure.ignore clean verify"
}
stage('Sonar') {
sh "'${mvnHome}/bin/mvn' -s $MAVEN_SETTINGS sonar:sonar"
}
stage('Packaging') {
sh "'${mvnHome}/bin/mvn' -s $MAVEN_SETTINGS package"
}
stage('Deploy') {
sh "'${mvnHome}/bin/mvn' -s $MAVEN_SETTINGS deploy}"
}
}
最好的,André