Синтаксис конвейера не распознается в сборке PR

У меня есть конвейер Jenkins для моей организации github, использующий общую библиотеку. Библиотека хорошо работает для обычной сборки при ручном запуске или фиксации события. Код библиотеки, как показано ниже:

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-билдер, так как эта библиотека существует определенное время. И это не должно быть проблемой версии плагина, поскольку вы можете видеть, что основной конвейер работает правильно.


person LynxZh    schedule 23.01.2019    source источник


Ответы (1)


Я просто сам разбираюсь в проблеме. Это оказывается проблемой при рефакторинге конвейера в разделе сборки PR, в котором отсутствует stages.

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

поэтому после оберните сцену stages. Это работает нормально. Кажется, сообщение об ошибке сбивает с толку. Возможно, анализатор DSL дает неверную информацию.

person LynxZh    schedule 23.01.2019