【问题标题】:Accessing groovy variable in shell execution step in jenkinsfile在 jenkinsfile 的 shell 执行步骤中访问 groovy 变量
【发布时间】:2019-07-13 02:28:39
【问题描述】:

在我的Jenkinsfile 中,我定义了一个 groovy 变量,我想在下面的 shell 命令中使用该值:

ret 是来自命令 1 shell 执行的版本值为 7.0.1.0.284 的变量

command1 = """curl -s "https://abc/maven-metadata.xml" | grep "<version>.*</version>" | sort | uniq | sed -e "s#\\(.*\\)\\(<version>\\)\\(.*\\)\\(</version>\\)\\(.*\\)#\\3#g"| grep 7.0.1.0 | tail -n1"""
ret = sh(script: command1 , returnStdout: true)
command2 = "wget --quiet --no-check-certificate --no-proxy https://abc-nexus.com/nexus/content/repositories/item/\$ret/item-portal-rpm-\$ret-idp-portal.rpm -P /var/jenkins/workspace/abc/item/RPMBUILD/RPMS"

使用此命令输出:

wget --quiet --no-check-certificate --no-proxy https://abc-nexus.com/nexus/content/repositories/item//item-portal-rpm--idp-portal.rpm -P /var/jenkins/workspace/abc/item/RPMBUILD/RPMS

它是空白的,如果我这样使用它:

command2 = "wget --quiet --no-check-certificate --no-proxy https://abc-nexus.com/nexus/content/repositories/item/$ret/item-portal-rpm-$ret-idp-portal.rpm -P /var/jenkins/workspace/abc/item/RPMBUILD/RPMS"

输出是:

wget --quiet --no-check-certificate --no-proxy https://abc-nexus.com/nexus/content/repositories/item/7.0.1.0.284
+item-portal-rpm-7.0.1.0.284

进入下一行,不被视为单行执行。

【问题讨论】:

    标签: groovy jenkins-pipeline jenkins-groovy


    【解决方案1】:

    您的第一次尝试是使用\ 转义$。这在 shell 解释器中被解释为 shell 变量,因为它以这种方式传递给 Jenkins Pipeline sh 方法。您的第二次尝试更接近正确的语法,但使用括号更安全:

    command2 = "wget --quiet --no-check-certificate --no-proxy https://abc-nexus.com/nexus/content/repositories/item/${ret}/item-portal-rpm-${ret}-idp-portal.rpm -P /var/jenkins/workspace/abc/item/RPMBUILD/RPMS"
    

    在评估的第二个命令中有换行符的原因是,从 shell 解释器返回的第一个命令的标准输出在其末尾有一个换行符分隔符。您需要使用 trim 方法删除此换行符,如下所示:

    ret = sh(script: command1 , returnStdout: true).trim()
    

    这会让你得到你想要的结果。

    【讨论】:

    • 太棒了,非常感谢您的投入。它就像魔术一样工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-01
    • 2021-01-21
    • 2021-12-02
    • 2022-10-21
    相关资源
    最近更新 更多