如何在jenkins管道中将变量从sh导出到groovy?

时间:2016-12-01 11:44:05

标签: jenkins groovy sh

如何将sh上下文的sh上下文中的变量导出到jenkins pipline作业的groovy上下文中?

管道代码:

node {
   echo 'Hello World'
   sh 'export VERSION="v$(date)"'
   echo env.VERSION
}

outupt:

[Pipeline] sh
[test-pipeline] Running shell script
++ date
+ export 'VERSION=vThu Dec  1 12:14:40 CET 2016'
+ VERSION='vThu Dec  1 12:14:40 CET 2016'
[Pipeline] echo`enter code here`
null

我正在使用Jenkins ver。 2.34

更新 有可能将变量写入临时文件并稍后读取。这看起来完全像是对我的黑客攻击。在使用并行构建时,默认情况下它不是“线程安全的”,如果需要在一次运行中导出多个变量,则不会扩展。有没有正确的方法来做到这一点?

1 个答案:

答案 0 :(得分:2)

我希望这会有所帮助。

node('master'){
    stage('stage1'){
    def commit = sh (returnStdout: true, script: '''echo hi
    echo bye | grep -o "e"
    date
    echo lol''').split()



    echo "${commit[-1]} "

    }
}