Решение этой проблемы может решить использование декларативной общей библиотеки Jenkins. См. Расширение с помощью общих библиотек
Создайте GenericMavenRelease.groovy в папке библиотеки - vars и вставьте этот код
def call(body){
//evaluate the body block, and collect configuration into the object
def config = [:]
def builder
body.resolveStrategy = Closure.DELEGATE_FIRST
body.delegate = config
body()
pipeline{
agent any
stages{
stage('Maven_Microservices'){
steps{
checkout([$class: 'GitSCM',
branches: [[name: "*/${env.BRANCH}"]],
doGenerateSubmoduleConfigurations: false,
extensions: [[$class: 'CleanBeforeCheckout'],
[$class: 'RelativeTargetDirectory', relativeTargetDir: "${projectName}"]],
submoduleCfg: [],
userRemoteConfigs: [[credentialsId: 'autouser',
url: "ssh://mygerrit:29418/maven/${projectName}"]]])
container('maven') {
configFileProvider([configFile(fileId: 'maven_settings', variable: 'MAVEN_SETTINGS')]) {
dir("${projectName}") {
sh 'mvn -s $MAVEN_SETTINGS versions:update-parent'
sh 'mvn -s $MAVEN_SETTINGS versions:resolve-ranges'
sh 'mvn -s $MAVEN_SETTINGS versions:use-releases'
sh 'mvn -s $MAVEN_SETTINGS --batch-mode release:prepare'
}
}
}
}
}
}
}
Создайте Jenkinsfile, как показано ниже в каждом репозитории
@Library('maven-library@1.0.0') _
GenericMavenRelease {
}
Таким образом, вы следуете за DRY - не повторяйте себя и создайте код с несколькими хранилищами с одним конвейерным кодом