Jenkins Pipeline - вставка переменной в оболочку создает новую строку - PullRequest
1 голос
/ 07 февраля 2020

Я использую параметр Choice в своем файле jenkins для выбора среды следующим образом:

pipeline {
     agent any
     parameters {
    choice(
        name: 'ENVIRONMENT_URL',
        choices: "https://beta1.xyz.com\nhttps://beta2.xyz.com\nhttps://beta3.xyz.com",
        description: 'interesting stuff' )
  }

в разделе Stage, у меня есть следующий фрагмент

 stage('execute tests') {
            steps {
                script {
                        sh """URL=${ENVIRONMENT_URL} npm run e2e:tests"""
                        sh 'echo -e "\nTest Run Completed.\n"'   
                }
             }   
            }

Однако, когда я запускаю конвейерное задание, выбирая добавленный параметр выбора, выполняется следующее (вставленный параметр выбора создает разрыв строки):

+ URL=https://beta1.xyz.com
+ npm run e2e:tests

Использование переменной вызывает разрыв строки, и вот что вызывающий проблему. Я пробовал разные способы избежать разрыва строки. Пробовал использовать переменную, но это не помогло. пробовал с разными цитатами, что тоже не получилось.

Что я могу сделать, чтобы избежать разрыва строки?

1 Ответ

3 голосов
/ 07 февраля 2020

Вы можете использовать метод trim в типе класса String для удаления конечных пробелов и новой строки:

sh "URL=${params.ENVIRONMENT_URL.trim()} npm run e2e:tests"

Примечание. Я также указал, что ваш параметр находится в карте params, и удалил тройные кавычки. как и для многострочного форматирования строк.

В качестве альтернативы, вы можете указать выбор в виде массива, а не в виде многострочной строки. Аргумент choices будет выглядеть следующим образом:

choice(
  name:        'ENVIRONMENT_URL',
  choices:     ['https://beta1.xyz.com', 'https://beta2.xyz.com', 'https://beta3.xyz.com'],
  description: 'interesting stuff'
)

Любое решение решит вашу проблему.

...