Jenkins 的 Pipeline Job 傳遞 Boolean 參數時有一點雷,我第一次用 Boolean 參數真的被卡了一陣子。
本篇將介紹 Pipeline Job 在 Groovy 中取用 Boolean 參數的問題。
1. Pipeline Job
先建立一個帶 Boolean 參數的 Pipeline Job。步驟如下:
2. Groovy
在 Groovy 把參數顯示出來,並建立簡單的判斷式。
1 | // BooleanSamplePipelineJob |
3. 執行 Pipeline Job
執行 Pipeline Job 第一次把 isTest 打勾,第二次不要打勾:
照 Groovy 邏輯 isTest=false 應該要顯示 *Do nothing..*,結果完全不符合預期。
4. 修正方式
主要原因是傳入的 Boolean 參數是物件型別的 Boolean
,並且有實作 .toString()
方法,因此在 echo 中顯示正常。
但用於 Groovy 判斷式時,因為該物件不是 null
,所以被認定為是 true
。
解決方式是,收到外部 Boolean 參數後,用 Boolean.valueOf( )
轉存到區域變數中再使用。如下:
1 | // BooleanSamplePipelineJob |