在單個Jenkins作業中,我們可以通過指定schedule
以及polling
來觸發構建。但是,在這兩種情況下,都會觸發構建,並且我已配置爲後構建步驟的部署操作(使用PostBuild Task
插件)也會發生。我希望只要通過輪詢檢測到更改就發生構建,但只能根據我提供的計劃進行部署。我可以將構建配置爲每分鐘發生一次,但部署應該每天在單一的Jenkins作業中僅發生一次?
是否可以在單個作業中完成,還是必須爲它們配置兩個單獨的作業?
在單個Jenkins作業中,我們可以通過指定schedule
以及polling
來觸發構建。但是,在這兩種情況下,都會觸發構建,並且我已配置爲後構建步驟的部署操作(使用PostBuild Task
插件)也會發生。我希望只要通過輪詢檢測到更改就發生構建,但只能根據我提供的計劃進行部署。我可以將構建配置爲每分鐘發生一次,但部署應該每天在單一的Jenkins作業中僅發生一次?
是否可以在單個作業中完成,還是必須爲它們配置兩個單獨的作業?
你說你使用的是PostBuild Task
插件。這允許在控制檯日誌上執行正則表達式來確定是否執行任務。
按計劃開始的構建將在日誌頂部有Started by timer
。您只需在「日誌文本」字段下將此表達式添加到PostBuild步驟中即可。如果您已經在使用某些標準,請點擊「添加」按鈕添加另一個「日誌文本」字段,並使用它們之間的「AND」運算符
在2份工作中做得更乾淨。然而,如果你真的需要在一份工作中使用它,你可以使用Jenkins插件組合來完成這項工作。
當BUILD_CAUSE == SCHEDULED時,使用Flexible Publish插件生成後操作來設置條件發佈步驟,或者當BUILD_CAUSE_SCHEDULED == true時。 (只是測試一個條件。)請注意,您需要使用詹金斯的表達式語法,就像這樣:
${ENV,var="BUILD_CAUSE_SCHEDULED"}
* BUILD_CAUSE_SCHEDULED不是其真實姓名,你需要找到這一點上你自己的,對不起。