2012-06-22 92 views

回答

48

Post build task插件很容易做到。

Jenkins - "Post build task" option

+36

我會推薦[PostBuildScript插件](https://wiki.jenkins-ci.org/display/JENKINS/PostBuildScript+Plugin)來代替簡單地運行腳本。如果您不需要在日誌輸出上進行條件化,則它更簡單,更健壯。例如,它允許在構建後操作中運行任何構建步驟。 – Sampo

+8

另請注意,Post Build Task插件會將整個控制檯輸出放入內存中以執行條件測試......如果有數百個作業產生大量輸出,則可能佔用大量內存......我們的jenkins主服務器剛剛崩潰由於這個插件... – grayaii

+1

PostBuildScript插件已被暫停。 – Upen

0

您必須將構建後的shell腳本設置爲單獨的Jenkins作業,並將其作爲構建後步驟觸發。看起來您需要使用Parameterized Trigger Plugin作爲標準的「構建其他項目」選項,只有在您的觸發構建成功時纔有效。

+0

我怎麼能觸發腳本,如果構建失敗完全基於下我的工作任務或者可執行的shell腳本我有嗎?謝謝 – kforkarim

+0

考慮到這一點,在構建腳本本身中進行控制可能會更容易。你使用的是什麼構建框架? –

+0

使用shell腳本來構建iOS框架 – kforkarim

3

如果我正在閱讀您的問題,您希望在構建的後構建操作部分中運行腳本。

我自己使用PostBuildScript Plugin運行git clean -fxd構建已存檔的工件和發佈的測試結果後。我的詹金斯奴隸有SSD磁盤,所以我沒有空間將生成的文件保存在工作區中。

2

你應該可以用Batch Task plugin來做到這一點。

  1. 在項目中創建批處理任務。
  2. 添加一個「調用批量任務」後期編譯選項,選擇相同的項目。

替代方案也可以是Post build task插件。

9

你也可以使用Groovy Post Build運行任意命令 - 這將給你很多的控制權,當他們運行等等。在失敗或不穩定的構建中,我們使用它來運行'責怪的手指'shell腳本。

if (manager.build.result.isWorseThan(hudson.model.Result.SUCCESS)) { 
    item = hudson.model.Hudson.instance.getItem("PROJECTNAMEHERE") 
    lastStableBuild = item.getLastStableBuild() 
    lastStableDate = lastStableBuild.getTime() 
    formattedLastStableDate = lastStableDate.format("MM/dd/yyyy h:mm:ss a") 
    now = new Date() 
    formattedNow = now.format("MM/dd/yyyy h:mm:ss a") 
    command = ['/appframe/jenkins/appframework/fob.ksh', "${formattedLastStableDate}", "${formattedNow}"] 
    manager.listener.logger.println "FOB Command: ${command}" 
    manager.listener.logger.println command.execute().text 
} 

(我們的命令接受最後的穩定版本的日期和當前時間作爲參數,以便它可以去調查誰可能已經打破了身材,但你可以運行你在一個類似的方式喜歡的任何命令)