2012-11-07 19 views
0

在單個Jenkins作業中,我們可以通過指定schedule以及polling來觸發構建。但是,在這兩種情況下,都會觸發構建,並且我已配置爲後構建步驟的部署操作(使用PostBuild Task插件)也會發生。我希望只要通過輪詢檢測到更改就發生構建,但只能根據我提供的計劃進行部署。我可以將構建配置爲每分鐘發生一次,但部署應該每天在單一的Jenkins作業中僅發生一次?

是否可以在單個作業中完成,還是必須爲它們配置兩個單獨的作業?

回答

1

你說你使用的是PostBuild Task插件。這允許在控制檯日誌上執行正則表達式來確定是否執行任務。

按計劃開始的構建將在日誌頂部有Started by timer。您只需在「日誌文本」字段下將此表達式添加到PostBuild步驟中即可。如果您已經在使用某些標準,請點擊「添加」按鈕添加另一個「日誌文本」字段,並使用它們之間的「AND」運算符

1

在2份工作中做得更乾淨。然而,如果你真的需要在一份工作中使用它,你可以使用Jenkins插件組合來完成這項工作。

  • 使用EnvInject插件來公開BUILD_CAUSE和/或BUILD_CAUSE_SCHEDULED *環境變量。 (這可能不是必須的,您可能可以在默認情況下引用Jenkins配置中的Jenkins變量)
  • 當BUILD_CAUSE == SCHEDULED時,使用Flexible Publish插件生成後操作來設置條件發佈步驟,或者當BUILD_CAUSE_SCHEDULED == true時。 (只是測試一個條件。)請注意,您需要使用詹金斯的表達式語法,就像這樣:

    ${ENV,var="BUILD_CAUSE_SCHEDULED"} 
    

* BUILD_CAUSE_SCHEDULED不是其真實姓名,你需要找到這一點上你自己的,對不起。

相關問題