Извините, я не смог придумать хорошее название, которое объясняет, что я имею в виду.Так что в настоящее время у нас есть этот плагин сборки, определенный в общей библиотеке:
//myBuildPlugin.groovy
def call(body) {
def pipelineParams = [:]
body.resolveStrategy = Closure.DELEGATE_FIRST
body.delegate = pipelineParams
node('some-label') {
body()
}
}
Теперь я в конечном итоге хочу иметь возможность добавлять свои собственные шаги, такие как:
//Jenkinsfile
myBuildPlugin {
doBuild {
mavenToolId = 'my_maven3'
deployMavenArtifact = true
}
doUnitTests {
publishResult = false
}
doDocker {
dockerRegistry = 'http://xyz'
}
// other components
}
И поэтому каждый проект долженвключите необходимые этапы, как, например, другому проекту может понадобиться только это:
myBuildPlugin {
doBuild {
mavenToolId = 'my_maven3'
deployMavenArtifact = true
}
}
и doBuild
, например, это еще один классный класс:
//doBuild.groovy
def call(body) {
def pipelineParams = [:]
body.resolveStrategy = Closure.DELEGATE_FIRST
body.delegate = pipelineParams
body()
stage('Maven Build') {
sh 'mvn clean verify'
}
}
Проблема в том, чтоДженкинс продолжает просить меня одобрить вызов метода в строке body()
, и хотя я утверждаю сценарий, он все еще спрашивает меня, что заставило меня подумать, что, возможно, я не могу вызвать body()
внутри node {...}
Кто-нибудь знает возможно ли это?
PS Я не эксперт в отличном коде