2013-08-29 45 views
21

我正在編寫一個Bamboo插件,其大部分已完成。Bamboo:如果作業被取消或失敗,如何執行一些邏輯

該插件的工作原理是通過發送到服務器的請求啓動遠程進程,然後輪詢同一服務器,直到它收到一條消息,說明進程已完成或發生錯誤 - 此部分工作。

我想添加一些額外的邏輯,我可以通知此服務器,如果用戶取消工作,但我不確定如何去做這件事。

我玩過創建另一個作爲最終任務運行的任務,但是我不知道如何檢測以前的任何任務是否失敗或被取消。

我試過使用List<TaskResult> taskResults = taskContext.getBuildContext().getBuildResult().getTaskResults();來獲得上一個任務結果的列表,但是這總是返回0任務結果。

我也試過使用Post-Build Completed Action Module,但是我不確定如何將它添加到工作中,並且關於此的文檔讓我有些迷惑。

如果有人能幫助我在正確的方向,我將不勝感激。

+2

,我認爲你應該看看剛剛創建一個事件偵聽器: https://developer.atlassian.com/display/BAMBOODEV/Bamboo+Event+Listeners 目前已經存在的情況下,你可以聽 HTTPS:/ /docs.atlassian.com/atlassian-bamboo/2.7/com/atlassian/bamboo/event/BuildCanceledEvent.html – fogedi

+0

@bScutt:您可能會在https://answers.atlassian.com/上找到更多答案,而不是在這裏發帖,但福吉迪是正確的。註冊一個監聽器,並監聽BuildCanceledEvent,並將適當的請求發佈到用戶取消的服務。 – Chii

+0

@bScutt Atlassian答案是Atlassian相關問題的更好地方:http://answers.atlassian.com(注意:因爲他們當前正在遷移到另一個平臺,您可能無法在該平臺上發帖) – Adrian

回答

7

從閱讀你寫的內容,我認爲使用事件監聽器絕對是解決問題的正確方法。下面我提供了我自己創作的圖像,它似乎描述了您構建的內容,並顯示了放置事件偵聽器的最佳位置。

實質上,您的客戶端將通過其網絡控制器機制向服務器發出取消通知。然後,服務器將通過其已經通過某種網絡協議(我假定爲TCP)已連接到客戶端的網絡控制器接收取消通知。當來自客戶端網絡控制器的取消通知到達服務器的網絡控制器時,服務器的網絡控制器中的事件監聽器將通知服務器構建管理器終止遠程構建。

圖程序的 enter image description here

我希望這有助於。