[英]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.