PR版本中无法识别管道语法

时间:2019-01-23 19:18:14

标签: jenkins jenkins-pipeline jenkins-declarative-pipeline

我使用共享库为我的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构建器是否可以正常工作,因为这个库存在了一段时间。而且这不应该是插件版本问题,因为您可以看到主管道正常运行。

1 个答案:

答案 0 :(得分:0)

我自己找出问题所在。当重构PR构建部分中缺少stages的管道时,这是一个问题。

pipeline {
  stage (" do some stuff") {
  }
}

所以在用stages包装舞台之后。工作正常。错误消息似乎令人困惑。可能是DSL解析器提供了错误的信息。