簡體   English   中英

jenkins-如何將值從bash傳遞到groovy?

[英]jenkins - how to pass a value from bash to groovy?

我正在使用兩個腳本組件進行詹金斯安裝。 bash位運行,然后再時髦 我希望能夠從bash腳本-> groovy腳本傳遞一個值(屬性?其他?)。

這可能嗎? 我是否需要將該值寫入屬性文件並以常規方式讀回?


編輯:我的目標是在bash中生成一個build#並將其傳遞給groovy,以便我可以在jenkins顯示中設置描述並構建#。 看來groovy在構建服務器上不可用,所以我正在尋找另一個方向。 目前正在嘗試使用“ postbuild”插件和“ env-inject”插件。 公開征求意見。

要使此成功,請考慮以下幾點:

  1. 確保您嘗試使用Jenkins中的一個“執行外殼”或通過腳本來完成此操作。
  2. 導出shell變量,以便該變量將出現在將執行groovy腳本的子進程中。
# foo.sh
export foo=bar
groovy myscript.groovy
# myscript.groovy
def env = System.getenv()
String myvar=env['foo']
println myvar

運行foo.sh應該會產生以下結果:

./foo.sh
bar

如果出於某種原因而不希望導出變量(可能有充分而有效的理由),則仍可以將變量作為“系統屬性” 顯式傳遞給groovy腳本:

# foo.sh
foo=bar
groovy -Dfoo="$foo" yourscript.groovy

# yourscript.groovy
String yourvar = System.properties['foo']
println yourvar

產生以下結果:

$ ./foo.sh
bar
$ 

最好的方法是設置一個環境變量,以將信息從bash共享到groovy。 您也可以使用標准輸入/輸出來傳送內容。

因此,如果您在bash腳本中設置env,則在該腳本之外將無法使用它。 不用執行bash腳本,而是在jenkins的命令中內聯該腳本。 運行您的bash代碼,然后調用groovy腳本。

像下面這樣

#do somebash scripting
VARIABLE="something"

#call your groovy code
groovy util.groovy

您的常規代碼(util.groovy):

String variable = env['VARIABLE']

我只是在這個問題上工作了幾天,以為我可以分享我發現的東西。 我必須從.sh文件訪問groovy文件中的變量,並且在第一次抓取變量時遇到了困難。 不過,有一種簡單的方法可以做到這一點。 這是我所做的:

在bash文件中,將值保存在變量中。 然后在常規腳本中執行以下操作:

variableToGet = sh(returnStdout: true, script: """
                . ${DIRECTORY}/bash_file.sh
                echo \$VARIABLE
            """).trim()

希望這可以幫助。 這個問題是一個很好的挑戰! 需要特別注意的是,無論您要獲取哪種類型的變量,標准輸出都將返回String。 如果需要使用整數值,則可以將整數值與Integer.parseInt(variableToGet)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM