Синтаксис конвейера не распознается в сборке PR - PullRequest
0 голосов
/ 23 января 2019

У меня есть конвейер 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") {
          ...
        }
      }
    }
  }
}

И файл Дженкинса в моем хранилище:

@Library('MySharedLibrary') _
MyPipeline {
  myconfig = [ build: true ]
}

Корпус содержит несколько настроенных конфигураций.

Когда происходит сборка без PR, она проходит корректно, без проблем.

Когда происходит сборка PR, он переходит в первый раздел и выбрасывает «агента», который не входит в число шагов.

java.lang.NoSuchMethodError: No such DSL method 'agent' found among steps

Я не могу вспомнить, работает ли этот PR-конструктор, поскольку эта библиотека существует в течение определенного периода времени. И это не должно быть проблемой версии плагина, поскольку вы можете видеть, что основной конвейер проходит правильно.

1 Ответ

0 голосов
/ 24 января 2019

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...