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

如何在Bitbucket Data Center界面中将提交消息内的问题ID转为自定义追踪器链接?

技术实现建议:Bitbucket Data Center 自定义提交消息链接转换

核心方案

Bitbucket Data Center允许通过插件扩展提交消息的渲染逻辑,核心是利用Commit Comment Renderer扩展点拦截原始提交文本,识别bug#XXX/feature#XXX格式的内容并替换为自研问题追踪器的跳转链接。

具体实现步骤

1. 初始化插件项目

使用Atlassian SDK创建Bitbucket插件项目,指定与你司部署版本兼容的Bitbucket Data Center版本:

atlas-create-bitbucket-plugin

2. 注册扩展点

在atlassian-plugin.xml中声明自定义渲染器的扩展:

<component key="custom-issue-link-renderer" class="com.yourcompany.bitbucket.plugin.IssueLinkRenderer">
  <extension point="com.atlassian.bitbucket.server.bitbucket-comment-renderer:commentRenderer"/>
</component>

3. 编写渲染逻辑

实现CommentRenderer接口,通过正则匹配目标文本并替换为追踪器链接:

import com.atlassian.bitbucket.comment.Comment;
import com.atlassian.bitbucket.comment.CommentRenderer;
import com.atlassian.plugin.spring.scanner.annotation.component.Scanned;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

@Scanned
public class IssueLinkRenderer implements CommentRenderer {

    // 匹配bug/feature加编号的正则
    private static final Pattern ISSUE_PATTERN = Pattern.compile("(bug|feature)#(\\d+)");
    // 替换为你司自研追踪器的URL模板
    private static final String TRACKER_URL = "https://your-internal-tracker.com/%s/%s";

    @Override
    public String render(Comment comment) {
        String originalText = comment.getText();
        Matcher matcher = ISSUE_PATTERN.matcher(originalText);
        StringBuffer result = new StringBuffer();
        
        while (matcher.find()) {
            String issueType = matcher.group(1);
            String issueId = matcher.group(2);
            String targetUrl = String.format(TRACKER_URL, issueType, issueId);
            // 替换为带链接的HTML
            matcher.appendReplacement(result, String.format("<a href=\"%s\" target=\"_blank\">%s#%s</a>", 
                                                           targetUrl, issueType, issueId));
        }
        matcher.appendTail(result);
        return result.toString();
    }
}

4. 可选优化

  • 权限适配:如果自研追踪器需要身份验证,可通过Bitbucket的UserService获取当前用户信息,生成带权限参数的跳转链接。
  • 安全处理:使用Atlassian的HtmlUtils对原始文本进行转义,避免HTML注入风险。
  • 格式扩展:调整正则表达式支持更多格式(如BUG-14、FEATURE_534)。

5. 测试与部署

  • 用atlas-run启动本地Bitbucket实例,提交含目标格式的代码,验证链接生成效果。
  • 执行atlas-package打包插件,在Bitbucket Data Center的插件管理页面上传安装。

注意事项

  • 插件版本必须与Bitbucket Data Center部署版本兼容,参考官方兼容性矩阵。
  • 正则表达式需覆盖所有需要匹配的场景,可添加Pattern.CASE_INSENSITIVE忽略大小写。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 14:24:51