对不起,我无法提出一个很好的标题来解释我的意思。所以目前我们在共享库中定义了这个构建插件:
//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'
}
}
问题是Jenkins一直要求我在行body()
上批准方法调用,即使我批准了脚本,它仍然问我是什么使我觉得也许我不能调用{{1 }} body()
内
有人知道这是否可能吗?
P.S。我不是Groovy代码专家