ДженкинсФайл | Декларативный этап для нескольких сред

У меня есть декларативный конвейер JenkinsFile ниже, это структура-

pipeline{
  agent{}
    stages{
      stage(dev_one){
       steps{
        }
       }
      stage(dev_two){
       steps{
        }
       }
      stage(test_one){
       steps{
        }
       }
      stage(test_two){
       steps{
        }
       }
    }
}

Я вижу, что в сценарии JPL есть избыточность, как вы видите, этапы (dev_one) и stage (test_one) будут иметь одинаковые шаги. Как я могу повторно использовать этап (dev_one), чтобы один этап можно было использовать для разных сред.


person asur    schedule 05.12.2018    source источник
comment
Возможно, это поможет stackoverflow.com/a/51786981/1230748 :)   -  person dcalap    schedule 05.12.2018
comment
@dcalap Спасибо. Я обновил фрагмент кода. это способ, которым мне нужно реализовать?   -  person asur    schedule 05.12.2018


Ответы (2)


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

pipeline{
  agent{}
    stages{
      stage(dev_one){
       steps{
          workOnEnv(this, 'dev_one', <next param>)
        }
       }
      stage(dev_two){
       steps{
          workOnEnv(this, 'dev_two', <next param>)
        }
       }
      stage(test_one){
       steps{
        }
       }
      stage(test_two){
       steps{
        }
       }
    }
}

void workOnEnv(Script script, String env, String param2, ...) {
    script.echo "work on env: $env"

    script.sh ""

    script.step()
}
person yong    schedule 05.12.2018
comment
Я добавил ответ. Не могли бы вы подтвердить с вашего конца - person asur; 05.12.2018

person    schedule
comment
ваше определение функции ENV_DEV_Deploy_and_Test выглядит хорошо. Пожалуйста, добавьте аргументы для него, если вам нужно, чтобы он мог принимать параметр. - person yong; 06.12.2018