Groovy параметр сценария оболочки - PullRequest
2 голосов
/ 07 августа 2020

Я пытался разделить свой код на два разных файла: callTheFunction.groovy и theFunction.groovy.

Как видно из названия файла:

  • callTheFunction.groovy вызывает функцию, определенную в theFunction.groovy, передавая случайные значения в качестве параметров.
  • theFunction - это сценарий оболочки - внутри функции groovy, который должен использовать параметры, переданные из callTheFunction.

ПРОБЛЕМА: Сценарий оболочки не распознает / не понимает аргументы, переменные пусты, без значения.

theFunction. groovy

def call(var1, var2) {
  sh '''
    echo "MY values $var1 and $var2"
  '''
}

callTheFunction. groovy

def call {
  pipeline {
    stages {
      stage ('myscript') {
        steps {
          theFunction("Value1", "Value2")
        }
      }
    }
  }
}

ВЫХОД ИЗ ТРУБОПРОВОДА:

MY values  and

Я знаю, что существуют похожие проблемы:

1 Ответ

0 голосов
/ 23 августа 2020

ОБНОВЛЕНИЯ

Вы можете использовать переменную среды, не имея environment {}

Используйте переменные среды, подобные тем, которые я использовал здесь (я немного реорганизовал ваш код ). Использование тройных одинарных кавычек для сценария оболочки для l oop и добавление к нему переменной grrovy:

def callfunc() {
  sh '''
  export s="key"
  echo $s
  for i in $VARENV1 
    do
      echo "Looping ... i is set to $i"
    done
    '''
}

pipeline {
    agent { label 'agent_1' }
    stages {
      stage ('Run script') {
        steps {
            script {
                env.VARENV1 = "Peace"
            }
            callfunc()
        }
      }
    }
}

ВЫХОД:

enter image description here

Reference: Jenkins - Передача параметра в groovy функция

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