[英]Access a Groovy variable from within shell step in Jenkins pipeline
[英]Access a Groovy variable within shell step in Jenkins pipeline
SSHUER
在stage one
按要求打印。 但是在第二stage two
它不會打印並給我一個空值。 第二stage two
所有三個嘗試語句都不起作用。 我不能使用腳本塊,因為我在實際代碼中有一些特殊字符。 關於如何在第二stage two
獲取 SSHUSER 值的任何建議。
def SSHUSER
environment {
if(params.CLOUD == 'google') {
SSHUSER = "test1"
} else if (params.CLOUD == 'azure') {
SSHUSER = "test2"
}
}
pipeline {
stage('stage one') {
steps {
echo "first attempt '${SSHUSER}'"
}
}
stage('stage two') {
steps {
sh '''#!/bin/bash
echo "first attempt '${SSHUSER}'"
echo "second attempt \${SSHUSER}"
echo "thrid attempt \$SSHUSER"
if ssh \${SSHUSER}@$i 'test -e /tmp/test'";
then
echo "$i file exists "
fi
'''
}
}
}
您對environment
塊的使用有點奇怪,它應該駐留在pipeline
塊內,變量應該在environment
塊內初始化。
如果是在外部定義的變量將不會作為環境變量傳遞給shell 腳本。
如果你想使用 `pipeline' 塊內的environment
塊,只需定義你想要的參數(作為字符串),它們將可用於所有階段,並且它們將作為 shell 的環境變量傳遞。
例如:
pipeline {
agent any
parameters{
string(name: 'CLOUD', defaultValue: 'google', description: '')
}
environment {
SSHUSER = "${params.CLOUD == 'google' ? 'test1' : 'test2'}"
}
stages {
stage('stage one') {
steps {
echo "first attempt '${SSHUSER}'"
}
}
stage('stage two') {
steps {
sh '''#!/bin/bash
echo "first attempt '${SSHUSER}'"
echo "second attempt \${SSHUSER}"
echo "thrid attempt \$SSHUSER"
if ssh \${SSHUSER}@$i 'test -e /tmp/test'";
then
echo "$i file exists "
fi
'''
}
}
}
}
如果您不想使用environment
塊或自己管理參數,您可以使用全局變量在pipeline
塊之外執行此操作,但是它們不會被傳遞環境變量,您將需要使用字符串插值( """
代替of '''
) 來計算將命令傳遞給 shell 時的值:
SSHUSER = ''
if(params.CLOUD == 'google') {
SSHUSER = "test1"
} else if (params.CLOUD == 'azure') {
SSHUSER = "test2"
}
pipeline {
agent any
parameters{
string(name: 'CLOUD', defaultValue: 'google', description: 'Bitbucket Payload', trim: true)
}
stages {
stage('stage one') {
steps {
echo "first attempt '${SSHUSER}'"
}
}
stage('stage two') {
steps {
sh """#!/bin/bash
echo "first attempt '${SSHUSER}'"
echo "second attempt ${SSHUSER}"
echo "thrid attempt $SSHUSER"
if ssh ${SSHUSER}@\$i 'test -e /tmp/test'";
then
echo "\$i file exists "
fi
"""
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.