Вот я намучался. Не знаю по какой причине, но я вполучил не рабочий Jenkinsfile. Причем, эта копия с других проектов где это работает годами! Капец.
Мне надо было сделать так, что бы выставлялись переменные окружения в зависимости от имени бранча. Если master то выставить пару переменных для master, если release-* то другие.
И раньше вот эта конструкция работала:
pipeline {
environment {
JAVA_HOME = "/usr/java/jdk-11.0.2"
COMMIT7 = sh(
script: '(echo ${GIT_COMMIT}| tail -c 8)',
returnStdout: true
).trim()
MY_ENV = sh(
script: 'if [[ $BRANCH_NAME =~ "release-" ]]; then echo prod; else echo qa; fi',
returnStdout: true
).trim()
MY_VERSION = sh(
script: 'echo "${BRANCH_NAME}.${BUILD_ID}"',
returnStdout: true
).trim()
}
.....
Мне надо было сделать так, что бы выставлялись переменные окружения в зависимости от имени бранча. Если master то выставить пару переменных для master, если release-* то другие.
И раньше вот эта конструкция работала:
pipeline {
environment {
JAVA_HOME = "/usr/java/jdk-11.0.2"
COMMIT7 = sh(
script: '(echo ${GIT_COMMIT}| tail -c 8)',
returnStdout: true
).trim()
MY_ENV = sh(
script: 'if [[ $BRANCH_NAME =~ "release-" ]]; then echo prod; else echo qa; fi',
returnStdout: true
).trim()
MY_VERSION = sh(
script: 'echo "${BRANCH_NAME}.${BUILD_ID}"',
returnStdout: true
).trim()
}
.....
и так далее.
А вот сегодня я вижу ошибку от Bourne shell что хрень это ваша [[ конструкция.
Я понимаю, что bourne shell не понимает ни хрена [[ и =~.
переписал на использование bash:
pipeline {
environment {
JAVA_HOME = "/usr/java/jdk-11.0.2"
MY_ENV = sh(returnStdout: true, script:
'''#!/bin/bash
if [[ $BRANCH_NAME =~ "release-" ]]; then echo prod; else echo qa; fi
'''
).trim()
MY_VERSION = sh(returnStdout: true, script:
'''#!/bin/bash
if [[ $BRANCH_NAME =~ "release-" ]]; then echo "${BRANCH_NAME}.${BUILD_ID}"; else echo "${BRANCH_NAME}.${BUILD_ID}-SNAPSHOT"; fi
'''
).trim()
}
Комментариев нет:
Отправить комментарий