我使用共享库为我的github组织提供了一个Jenkins管道。当手动触发或提交事件时,该库可以正常构建。库代码如下:
vars/MyPipeline.groovy
call(body) {
def usercfg = [:]
body.resolveStrategy = Closure.DELEGATE_FIRST
body.delegate = usercfg
body()
if (env.BRANCH_NAME ==~ /^PR-\d+$/) {
pipeline {
agent any
tools "JDK8"
stages {
stage("build jar") {
....
}
}
}
} else {
pipeline {
agent any
tools "JDK8"
stages {
stage("Initialize") {
...
}
stage("Build Complete pipeline") {
...
}
}
}
}
}
还有我的存储库中的Jenkinsfile:
@Library('MySharedLibrary') _
MyPipeline {
myconfig = [ build: true ]
}
主体包含一些自定义的配置。
发生非PR构建时,它将正确运行,没有问题。
在进行PR构建时,它会进入第一部分,并且将“代理”排除在步骤之外。
java.lang.NoSuchMethodError: No such DSL method 'agent' found among steps
我不记得这个PR构建器是否可以正常工作,因为这个库存在了一段时间。而且这不应该是插件版本问题,因为您可以看到主管道正常运行。
答案 0 :(得分:0)
我自己找出问题所在。当重构PR构建部分中缺少stages
的管道时,这是一个问题。
pipeline {
stage (" do some stuff") {
}
}
所以在用stages
包装舞台之后。工作正常。错误消息似乎令人困惑。可能是DSL解析器提供了错误的信息。