Jenkins Pipeline ссылается на переменную среды в разделе переменных среды - PullRequest
1 голос
/ 02 мая 2019

Я создаю две переменные окружения в моем конвейере Jenkins,

environment{
base_ver=sh(script: 'grep FROM ${WORKSPACE}/Dockerfile | awk -F : \'{print $2}\'', returnStdout: true).trim()
git_hash=sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim()
}

Теперь я хочу создать еще одну переменную env в том же разделе, используя две вышеупомянутые переменные, это было бы что-то вроде этого Image = '$base_ver '-' $ git_hash 'Я пробовал несколько способов сделать это, но ни один из них, похоже, не работает, можем ли мы получить доступ к переменной env в разделе переменных env?Вот что я попробовал,

environment{
base_ver=sh(script: 'grep FROM ${WORKSPACE}/Dockerfile | awk -F : \'{print $2}\'', returnStdout: true).trim()
git_hash=sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim()
Image=sh(script: 'DockerImage=${base_ver}-${git_hash}', returnStdout: true).trim()

}

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

Ответы [ 2 ]

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

Я попробовал этот способ, и он работал для меня. Спасибо, ребята, за предложение.

sh """
Image=${PROD_ECR_REPO}:${env.base_ver}-${env.git_hash}
echo \$Image
"""
0 голосов
/ 02 мая 2019

В данный момент вы запускаете оболочку, определяете переменную в ней и завершаете работу. Ничего не напечатано, и поэтому возвращенный stdout пуст.

Конкатенация может быть выполнена groovy. Для этого не нужно запускать оболочку.
Ты это:

Image = base_ver + '-' + git_hash

Если вам нужно сделать это в оболочке по какой-либо причине, просто добавьте echo (также обратите внимание на двойные кавычки, чтобы переменные заменяли groovy перед вызовом shell):

Image=sh(script: "echo -n '${base_ver}-${git_hash}'", returnStdout: true).trim()

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