Как получить текущий конвейер Jenkins StepContext - PullRequest
0 голосов
/ 05 октября 2018

У меня есть шаг в конвейере, который извлекает объекты из контекста и использует их.Однако мне нужно получить доступ к этим объектам за пределами шагов, чтобы подать их на разные шаги, а второй шаг не раскрывает его.

stage() {
  steps {
    script {
        def status = waitForQualityGate()
        // Use the taskId
      }
    }
  }
}

Вызов waitForQualityGate() возвращает только логическое значение, поэтому я могунет доступа к нему.

Я мог бы вместо этого вручную инициализировать шаг, например так:

 script {
    def qualityGate = new WaitForQualityGateStep()
    def taskId = qualityGate.getTaskId()
 }

, но taskId равно нулю.Если я попытаюсь запустить методы запуска вручную на шаге:

script {
    def qualityGate = new WaitForQualityGateStep()
    qualityGate.start().start()
    def taskId = qualityGate.getTaskId()
}

Ошибка с сообщением:

java.lang.IllegalStateException: вы должны либо передать StepContextв конструктор StepExecution или создать StepExecution автоматически

У WaitForQualityGateStep есть нужная мне информация, но я не могу ее инициализировать, не имея StepContext (который является классом Abstract).Как я могу получить один из конвейера?

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

Я до сих пор не знаю, как вручную получить контекст шага, чтобы выполнить шаг вручную, но в случае, если кто-то еще обнаружит это, пытаясь получить информацию из плагина Sonar, я получил нужный мне идентификатор задачи..

def output = sh(script: "mvn sonar:sonar", returnStdout: true)
echo output  // The capture prevents printing to console

def taskUri = output.find(~'/api/ce/task\\?id=[\\w-]*')
0 голосов
/ 06 октября 2018

Вы можете определить переменную перед конвейером и на шаге просто установить ее значение.Таким образом, переменная видна через конвейер.

...