You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bamboo服务器实现构建启动时发送通知及获取自定义通知事件?

在Bamboo中实现构建启动时发送通知的方案

好问题!我之前帮不少团队解决过Bamboo里自定义通知事件的需求,刚好能给你分享几个可行的路子,实现构建启动时就触发通知,而不是只等构建完成。

方法一:开发自定义Bamboo插件(最可靠)

Bamboo原生的通知事件确实没有「构建启动」这个选项,所以最稳妥的方式是基于Atlassian SDK开发一个自定义插件,监听构建启动的核心事件。

核心步骤:

  1. 搭建Atlassian SDK开发环境,创建一个新的Bamboo插件项目
  2. 实现一个事件监听器,监听Bamboo内部的 com.atlassian.bamboo.event.BuildStartedEvent 事件
  3. 在监听器里编写通知逻辑——可以是发送邮件、调用Slack/Teams的webhook,或者推送内部系统的消息

简单代码示例:

import com.atlassian.bamboo.event.BuildStartedEvent;
import com.atlassian.event.api.EventListener;
import com.atlassian.plugin.spring.scanner.annotation.component.Scanned;
import com.atlassian.plugin.spring.scanner.annotation.imports.ComponentImport;
import com.atlassian.mail.server.MailServerManager;

@Scanned
public class BuildStartNotificationListener {

    private final MailServerManager mailServerManager;

    public BuildStartNotificationListener(@ComponentImport MailServerManager mailServerManager) {
        this.mailServerManager = mailServerManager;
    }

    @EventListener
    public void onBuildStarted(BuildStartedEvent event) {
        String planKey = event.getPlanResultKey().getPlanKey().toString();
        String buildNumber = event.getPlanResultKey().getBuildNumber().toString();
        String buildUrl = event.getPlanResultKey().getBuildResultUrl();

        // 这里可以替换成你需要的通知逻辑,比如发送邮件或调用webhook
        String subject = String.format("Bamboo构建已启动:%s #%s", planKey, buildNumber);
        String body = String.format("构建详情:%s", buildUrl);
        
        // 调用Bamboo邮件服务发送通知
        mailServerManager.getDefaultSMTPMailServer().send("your-team@example.com", subject, body);
    }
}

这个方法的优势是覆盖所有构建启动场景——哪怕代码拉取失败,只要构建触发了,事件就会被监听并发送通知,比任务级的方案更可靠。

方法二:利用构建计划的前置任务(无需开发)

如果不想折腾插件开发,也可以用Bamboo的原生任务功能,在构建计划的第一个位置添加一个自定义任务,专门用来发送启动通知。

具体操作:

  1. 打开目标构建计划的「配置」页面,进入「任务」标签
  2. 添加一个脚本任务(Shell/PowerShell/Python都可以)
  3. 在脚本里编写通知逻辑,比如用curl调用Slack的webhook:
curl -X POST -H 'Content-type: application/json' --data '{
    "text":"Bamboo构建已启动:${bamboo.planKey} #${bamboo.buildNumber}\n详情链接:${bamboo.buildResultsUrl}"
}' https://hooks.slack.com/services/XXX/XXX/XXX
  1. 把这个任务设置为构建计划的第一个任务,并确保它的执行条件是「总是执行」(这里它是第一个任务,主要是确保构建启动就触发执行)

这个方法的好处是快速实现,无需开发成本,但有个小局限:如果构建在任务执行前就失败了(比如代码仓库拉取权限不足、网络问题),这个通知就发不出去。如果你的场景对这种极端情况不敏感,这个方案完全够用。

方法三:借助Bamboo的Webhook扩展(部分场景适用)

如果你的团队已经在用第三方集成工具,有些工具可以通过Bamboo的REST API监听构建状态变化,或者你可以结合Bamboo的Webhook功能。不过这个方法的灵活性不如前两个,而且很多时候还是需要配合插件来触发「构建启动」的webhook事件,所以优先级不如前两个方案。


内容的提问来源于stack exchange,提问作者Vinicius Deschamps

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:56:55