2016-12-01 138 views
0

如何從sh context的sh上下文將變量導出到jenkins pipline作業的groovy上下文中?如何在jenkins管道中將變量從sh導出到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 

我使用詹金斯版本。 2.34

更新: 有可能將變量寫入臨時文件並稍後閱讀。這看起來完全像我的黑客。在使用並行構建時,它不是「線程安全的」,如果您需要在一次運行中導出多個變量,則不會擴展。有沒有適當的方法來做到這一點?

+0

重複? http://stackoverflow.com/questions/40629924/change-groovy-variables-inside-shell-executor-in-jenkins-pipeline/40637578#40637578 – MaTePe

+0

謝謝,是的,這是類似的東西,我想! –

回答

0

我希望這會有所幫助。

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



    echo "${commit[-1]} " 

    } 
}