簡體   English   中英

JENKINS的電子郵件觸發腳本中使用的屬性文件中的變量

[英]Variable from a property file used in email trigger script in JENKINS

我有兩個工作:Job_a和Job_b。 我想在Job_a中使用一個變量來決定是否應在JOb_b中發送電子郵件。
簡化的工作:

在Job_a中:

步驟1 :執行Windows批處理命令:

echo GO=Y > testme.txt

這將在工作區中創建GO = Y的testme.txt。

步驟2 :在其他項目上觸發/調用:

要構建的項目: Job_b
來自屬性文件的參數: testme.txt

在Job_b中:

第一步

echo Go = %GO%

生成后操作可編輯的電子郵件通知

觸發器 :腳本-構建后
觸發腳本

build.envVars["GO"]  == 'Y'

現在,運行Job_a,沒有觸發電子郵件,而Job_b中的步驟1確實顯示Go = Y

為了證明觸發器腳本本身是正確的,我在Job_a中添加了一個字符串參數:

Name: GO1
Default Value: Y

並將Job_b中的觸發腳本更改為:

build.envVars["GO1"]  == 'Y'

運行Job_a,因此也運行JOb_b,並且按預期方式發送了電子郵件。

似乎只有在上游作業中定義的參數才能在電子郵件觸發腳本中使用,屬性文件中的參數不可用。

我知道我可以使用EnvInject插件和/或使用System Groovy腳本從屬性文件中動態注入參數,我可以添加新參數,但是我的構建環境受到嚴格控制,沒有System groovy,沒有新的附加插件可以安裝。

我的詹金斯版本是1.622

與大家分享。 我發現出了什么問題。

該屬性文件只有一行: GO=Y
在Job_a中創建的屬性文件中的參數“ GO”確實傳遞給Job_b。

常規測試build.envVars["GO"] == 'Y'不返回'true',因此不會發送電子郵件。

我打印參數的長度:

println build.envVars["GO"].length()

println 'Y'.length()

哪個打印

2 
1

顯然,當我們使用以下命令創建屬性文件的內容時,會添加新的換行符

echo GO=Y > testme.txt

我必須剪掉新的換行符,因此請更改可編輯郵件的觸發腳本, 腳本-構建

build.envVars["GO"].trim() == 'Y'

它按預期工作。

暫無
暫無

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

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