竹子:如果作业被取消或失败,如何执行一些逻辑

22

我正在编写一个竹子插件,其中大部分已经完成。

该插件的工作原理是通过向服务器发送post请求启动远程进程,然后轮询同一台服务器,直到收到消息表示进程已完成或出现错误 - 这部分已经实现。

我想添加一些额外的逻辑,以便在用户取消任务时通知此服务器,但我不确定如何去做。

我尝试创建另一个任务,作为最终任务运行,但我不知道如何检测先前的任何任务是否失败或被取消。

我尝试使用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
@bScutt:你可能会在https://answers.atlassian.com/上找到更多答案,而不是在这里发布问题,但fogedi是正确的。注册一个监听器,监听BuildCanceledEvent事件,并向用户取消的服务发送适当的请求。 - Chii
@bScutt,Atlassian Answers是提问Atlassian相关问题的更好的地方:http://answers.atlassian.com(注意:由于他们目前正在迁移到另一个平台,您可能无法在那里发布) - Adrian
1个回答

7

从您所写的内容来看,我认为使用事件监听器绝对是解决您问题的正确方法。以下是我自己创建的一张图片,描述了您构建的内容,并展示了放置事件监听器的最佳位置。

实际上,您的客户端将通过其网络控制机制向服务器发出取消通知。然后,服务器将通过其网络控制器接收到该取消通知,该网络控制器已经通过某种网络协议(我假设是TCP)连接到客户端。当来自客户端网络控制器的取消通知到达服务器的网络控制器时,服务器的网络控制器中的事件监听器将会通知服务器构建管理器以终止远程构建。

您的程序图示 enter image description here

我希望能够帮到您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接