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

如何强制GitHub「Release标题」遵循指定格式规则

如何强制GitHub Release标题匹配指定格式并在无效时发送失败通知

要实现这个需求,必须借助GitHub Action——GitHub原生没有内置Release标题格式校验规则,需要通过自定义工作流来完成。以下是完整实现方案,覆盖正式版本、预发布版本和草稿的校验需求:

核心实现思路

通过监听Release相关事件触发工作流,用正则表达式校验标题格式;若格式不匹配,则在Release页面添加失败通知评论,并标记工作流为失败,让用户及时感知问题。

完整工作流示例

在仓库的.github/workflows/目录下创建release-title-validation.yml文件,内容如下:

name: 校验Release标题格式
on:
  release:
    types: [published, prereleased, created, edited] # 覆盖正式发布、预发布、草稿创建/编辑

jobs:
  validate-title:
    runs-on: ubuntu-latest
    permissions:
      issues: write # 允许在Release页面添加评论
      contents: read
    steps:
      - name: 检查Release标题格式
        uses: actions/github-script@v6
        with:
          script: |
            # 自定义正则表达式,根据需求修改
            # 示例规则:标题以v开头,后跟语义化版本号,支持预发布后缀(如v1.0.0-beta)
            const titleRegex = /^v\d+\.\d+\.\d+(-[a-zA-Z0-9]+)?$/;
            const releaseTitle = context.payload.release.name;

            if (!titleRegex.test(releaseTitle)) {
              # 在Release页面添加失败通知评论
              await github.rest.issues.createComment({
                owner: context.repo.owner,
                repo: context.repo.repo,
                issue_number: context.payload.release.id,
                body: `❌ Release标题格式无效!要求匹配示例:\`v1.0.0\` 或预发布版 \`v1.0.0-beta\`,当前标题:\`${releaseTitle}\``
              });
              # 抛出错误,标记工作流为失败
              throw new Error(`Release标题不符合格式要求:${releaseTitle}`);
            }

关键细节说明

  • 触发事件覆盖:

    • published:正式版本发布时触发
    • prereleased:预发布版本发布时触发
    • created:草稿创建时触发
    • edited:草稿或已发布版本的标题被编辑时触发(可选添加,确保修改后重新校验)
  • 正则自定义:
    修改titleRegex变量即可适配你的格式要求,比如:

    • 要求标题为Release vX.Y.Z:/^Release v\d+\.\d+\.\d+$/
    • 要求包含项目代号:/^PROJ-\d+ v\d+\.\d+\.\d+$/
  • 失败通知方式:
    示例中是在Release页面添加评论,你还可以扩展为:

    • 发送邮件通知:使用actions/email-action组件
    • Slack团队通知:使用slackapi/slack-github-action组件
  • 权限配置:
    必须添加permissions字段授予工作流写评论的权限,否则无法在Release页面添加通知。

注意事项

GitHub Action无法直接拦截Release的发布操作,但通过工作流失败标记+页面评论通知,能让用户快速发现格式问题并修改标题。如果需要更严格的管控,可以结合分支保护规则,确保只有符合格式的Release才能触发后续流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 22:30:53