我在管道标记之外声明一个变量,并使用readFile在脚本内部的一个阶段中进行初始化。当我尝试在when条件中使用此声明的变量时,when条件始终会跳过。
当我使用var1 ='myValue'初始化变量并检查 when {expression {var1 =='myValue'}}}有效。 我尝试将变量变成环境变量,但其他方法都无效
def test1=''
pipeline{
agent { label 'local'}
stages{
stage('initialization'){
steps{
sh """echo "myValue" > user_file
pwd
"""
script{
test1=readFile file: 'user_file
//env.TEST=readFile file: 'user_file', encoding: 'UTF-8' doesn't work
//test1='myValue' only this works
}
}
}
stage('test'){
when {
expression { return test1 == 'myValue'}
//environment name: 'TEST', value: 'myValue'
}
steps{
echo " user :${env.TEST}"
//this step always gets skipped because of when condition above
}
}
}
}
我希望何时运行可以执行以下步骤,但是每次都会跳过。
答案 0 :(得分:0)
在Matt对这个问题进行评论时,我在文件中有一个换行符。默认情况下,新行字符由echo引入。我不得不使用echo中的-n选项来抑制它。
echo -n "myValue" > user_file
以上命令仅将没有换行符的值放入文件中 抱歉,我的shell-foo不好,并且没有意识到默认情况下echo会换行。