jenkins - 如何在 Jenkins 脚本管道中的节点内执行 groovy 闭包?
问题描述
抱歉,我想不出一个好的标题来解释我的意思。所以目前我们在共享库中定义了这个构建插件:
//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
,例如,是另一个 groovy 类:
//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 我不是 groovy 代码方面的专家
解决方案
推荐阅读
- c# - 为什么这个请求没有调用存储库的更新方法(实体框架、自动映射器、存储库模式)?
- c - 使用指向 char 与 char 数组的指针
- c# - 将列表转换为数据表,具有一些属性也作为列表
- ios - “HistoryViewController”类型的值没有成员“匹配”
- html - 制作一个包含内容的响应圈
- eclipse - jboss 7.2 中缺少 jboss-modules.jar
- javascript - 如何使用 JavaScript 更改 HTML 元素?
- c# - 参数”不存在警告
- excel - 禁止特定表单控件按钮运行其分配的宏,即使它已被单击
- django - Django中用户设置的单独外键链接模型或自定义用户模型?