如何在条件步骤中使用声明的变量?

时间:2019-09-11 15:48:02

标签: jenkins jenkins-pipeline conditional-statements

我在管道标记之外声明一个变量,并使用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
            }
        }
    }
}

我希望何时运行可以执行以下步骤,但是每次都会跳过。

1 个答案:

答案 0 :(得分:0)

在Matt对这个问题进行评论时,我在文件中有一个换行符。默认情况下,新行字符由echo引入。我不得不使用echo中的-n选项来抑制它。

echo -n "myValue" > user_file

以上命令仅将没有换行符的值放入文件中 抱歉,我的shell-foo不好,并且没有意识到默认情况下echo会换行。