【问题标题】:How to assign a shell command output as value to envrionment variable?如何将 shell 命令输出作为值分配给环境变量?
【发布时间】:2018-08-05 18:44:05
【问题描述】:

下面是我的管道 sn-p,我试图在运行时为 RSTATE 变量分配一个值。这个值基本上存储在一个文本文件中,但我们需要 grep 并剪切它。所以shell命令输出应该是它的值。

pipeline
{
    agent any
    environment
    {
        RSTATE = 'R4C' 
        ISO_REV = 'TA'
        BuildSource = '18'
    }
    stages
    {   
        stage('get Rstate')
        {  
            echo env.RSTATE
        }
    } 
}

我正在尝试分配 RSTATE 值,例如:

 RSTATE = sh ( script: 'grep RSTATE /proj/MM/scm/com/iv_build/mm18_1/rstate/next_rstate.txt
                        |cut -d "=" -f2', returnStdout: true).trim()

但这不起作用。 我也尝试运行一个 shell 脚本,但这也不起作用。只有硬编码值有效。请提出建议。

【问题讨论】:

  • 能否请您提供 txt 文件中的一行,以及您要从中删除的具体内容?

标签: shell jenkins environment-variables jenkins-pipeline


【解决方案1】:

我测试并运行了你需要验证你的脚本是否返回你想要的值。

    pipeline
    {
        agent any
        environment
        {
            RSTATE = 'R4C' 
            ISO_REV = 'TA'
            BuildSource = '18'
        }
        stages
        {   
            stage('get Rstate')
            {  
                steps {
                    script {
                        def RSTATE2 = sh ( script: 'echo \${RSTATE}', returnStdout: true).trim()
                        echo env.RSTATE
                        echo RSTATE2
                    }
                }
            }
        } 
    }

【讨论】:

  • 感谢您的回复,但我认为我的问题并不清楚。我正在尝试在 evnironment 变量中计算 RSTATE 的值,而不是仅仅为其分配一个硬编码值,然后再回显它。
  • 上述解决方案工作得很好,但我希望 RSTATE 成为多个阶段使用的环境变量。
  • 这只是一个例子,你可以使用上面的 grep/cut,只需要检查它是否有效
猜你喜欢
  • 2017-07-21
  • 2012-01-27
  • 2016-09-08
  • 2021-02-26
  • 1970-01-01
  • 2021-03-18
  • 2021-02-26
  • 1970-01-01
  • 2011-01-28
相关资源
最近更新 更多