Как пометить этап работы Дженкинса как пропущенный, для скриптового конвейера - PullRequest
0 голосов
/ 15 мая 2019

Как пометить этап как пропущенный при использовании сценария конвейера . У меня нет проблем пропустить этап в декларативном конвейере. Я просто установил

when {
  expression {<some boolean expression>}

}

И если выражение оценивается как ложное, то этап пропускается. enter image description here

Проблема в том, что если вы попытаетесь сделать это с сценарием , вы получите:

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

сообщение об ошибке. Это связано с тем, что DSL декларативного конвейера отличается от скриптового конвейера Итак, как это можно сделать?

Ответы [ 2 ]

1 голос
/ 15 мая 2019

Решение этой проблемы требует небольшого взлома ... (не волнуйтесь, ничего сложного)

Способ сделать это - использовать модуль Дженкинса , который можно найти здесь .

Таким образом, чтобы пометить этап как пропущенный, нужно вызвать статический метод markStageSkippedForConditional , передав имя пропускаемого этапа.

Допустим, у вас есть сцена с именем «mystage».и вы хотите пропустить его и пометить как "пропущенный".Ваш код должен выглядеть примерно так:

import org.jenkinsci.plugins.pipeline.modeldefinition.Utils

node() {
  stage('a'){
    echo 'stage 1'
  }
  stage('mystage'){
    if(true){
       echo 'skipping stage...'
       Utils.markStageSkippedForConditional('mystage')
    }else{
      echo 'This stage may be skipped'

    }
  }
  stage('b'){
    echo 'stage 2'
  }
}

Обратите внимание, что вы ДОЛЖНЫ снять флажок Use Groovy Sandbox, поскольку метод Utils ограничен.

0 голосов
/ 15 мая 2019

Вы можете найти реализацию (в форме шага общего конвейера) в comquent / imperative-when на GitHub.

Это позволяет получить доступ к методу Utils.markStageSkippedForConditional, который вы нашли хорошим способом, например, следующим:

stage('Zero') {
    when(BRANCH_NAME != 'master') {
        echo 'Performing steps of stage Zero'
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...