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

如何仅在使用特定Issue模板创建Issue时触发GitHub Action?

仅在特定Issue模板触发GitHub Action的实现方法

你可以通过两种方式实现这个需求,具体如下:

方法一:通过Issue标题/正文的固定标识判断

GitHub Issue创建事件的payload里没有直接返回模板名称,但大多数Issue模板会在标题或正文中留下固定标识(比如模板自带的标题前缀、特定段落标题),你可以基于这些标识用if条件过滤。

比如你的bug.md模板创建的Issue标题默认包含「Bug 报告」,可以这样写Action的条件:

jobs:
  process-bug-issue:
    name: 处理Bug类型Issue
    if: contains(github.event.issue.title, 'Bug 报告')
    runs-on: ubuntu-latest
    steps:
      - run: |
          echo "处理编号为${{ github.event.issue.number }}的Bug Issue"

如果模板在正文开头有固定的标记(比如### 问题描述),也可以基于正文判断:

if: contains(github.event.issue.body, '### 问题描述')

这种方法的优点是简单直接,不需要额外API调用;缺点是依赖模板内容的固定性,如果模板后续修改了标识,需要同步更新Action的条件。

方法二:通过GitHub API获取模板名称

当用户使用模板创建Issue时,GitHub会在Issue的创建事件记录中保存模板名称,你可以通过GitHub API获取这个信息,再进行判断:

jobs:
  check-template-and-run:
    runs-on: ubuntu-latest
    steps:
      - name: 获取Issue使用的模板
        id: get-template
        run: |
          # 调用API获取Issue的第一个事件(即创建事件),提取模板名称
          TEMPLATE_NAME=$(gh api issues/${{ github.event.issue.number }}/events --jq '.[0].payload.template')
          echo "template=$TEMPLATE_NAME" >> $GITHUB_OUTPUT
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      
      - name: 仅在bug.md模板触发时执行
        if: steps.get-template.outputs.template == 'bug.md'
        run: |
          echo "该Issue使用bug.md模板创建,执行后续逻辑"

说明:

  • ubuntu-latest环境默认预装了GitHub CLI(gh),可以直接调用API
  • secrets.GITHUB_TOKEN是GitHub自动提供的令牌,拥有当前仓库的Issue读取权限,无需额外配置
  • 这种方法更准确,不受模板内容修改的影响,但需要额外的API调用步骤

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 10:27:15