如何在Markdown中通过issue编号获取并展示对应issue标题
解决方案
Markdown语法相关说明
标准Markdown本身不支持通过issue编号自动拉取远程仓库issue标题的能力,这类功能都是代码托管平台基于自身生态扩展实现的:
- 目前主流的GitHub、GitLab、Gitee等平台,都会自动识别内容中
#123格式的issue引用,鼠标hover时会弹出浮层展示issue标题、状态等信息 - 部分平台支持配置自动在issue编号旁直接显示标题,你可以查询对应平台的内部配置规则开启即可
工具实现方案
平台原生能力
- GitHub自带Release生成工具,创建Release时可以选择自动关联该版本包含的PR和关闭的issue,直接输出「编号+标题」格式的列表,可直接作为发布说明使用
- GitLab支持自定义发布说明模板,配置完成后会自动提取MR关联的所有issue的编号和标题,按预设格式生成内容,直接复制即可使用
自定义脚本方案
你也可以自己写轻量脚本快速实现需求,核心逻辑只有两步:
- 用正则匹配MR描述、commit信息中的
#\d+格式字符串,提取所有关联的issue编号 - 调用对应代码托管平台的OpenAPI,传入issue编号查询对应标题,按发布说明的格式要求输出即可
以下是极简的Python实现参考:
import re import requests # 替换为你的MR描述文本或commit日志内容 source_content = "本次MR修复问题:#123 #124 #127" # 提取所有issue编号 issue_ids = re.findall(r"#(\d+)", source_content) # 以下为GitLab接口调用示例,GitHub/Gitee等平台替换为对应接口规则即可 API_DOMAIN = "你的代码托管平台域名" API_TOKEN = "你的个人访问鉴权令牌" PROJECT_ID = "你的项目唯一ID" release_note = [] for issue_id in issue_ids: resp = requests.get( f"{API_DOMAIN}/api/v4/projects/{PROJECT_ID}/issues/{issue_id}", headers={"PRIVATE-TOKEN": API_TOKEN} ) issue_title = resp.json()["title"] release_note.append(f"- #{issue_id} {issue_title}") # 输出最终可直接使用的发布说明 print("\n".join(release_note))
- 如果你的团队使用标准化的commit规范,也可以搭配commitlint自定义插件,在代码提交阶段就自动查询关联issue的标题写入commit body,后续提取发布说明时可以直接从commit日志中解析,无需重复调用接口
内容的提问来源于stack exchange,提问作者R4cOOn
相关产品推荐
相关产品推荐

