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

GitHub Action推送Microsoft Teams通知异常问题求助

GitHub Action发送Teams失败通知无响应问题解决方案

问题根因

经排查问题由两处语法错误+一处上下文取值风险共同导致:

  • 消息卡片JSON存在语法错误,导致失败场景下请求被Teams接口拒绝
  • job状态在复合Action中存在上下文取值异常的风险

修复步骤

1. 修复自定义Action的JSON语法问题

修改.github/actions目录下的YAML文件两处代码:

  • 将activityTitle行的[${SHORT_SHA}](COMMIT_HTML_URL)改为[${SHORT_SHA}](${COMMIT_HTML_URL}),原代码将变量名写死为字符串,会破坏JSON结构
  • 将case默认分支的NOTIFICATION_ICON=&#x2754""改为NOTIFICATION_ICON="&#x2754",原代码多写的双引号会导致JSON字符串转义异常

2. 显式传递job状态到复合Action

避免复合Action上下文取值错误,修改自定义Action代码,在开头新增入参声明:

name: 'MS Notification'
description: 'Notification to MS Teams'
# 新增入参
inputs:
  job-status:
    description: 'Current job execution status'
    required: true
runs:
  using: "composite"
  steps:
    - id: notify
      shell: bash
      run: |
        # 原有逻辑不变,仅修改case判断的变量
        case ${{ inputs.job-status }} in
          # 原有case分支不变
        esac
        # 剩余原有逻辑不变

3. 调整主工作流的Action调用逻辑

在两个job的Action调用处传入job状态参数:

# job1的通知步骤
- name: "testing_ms"
  if: always()
  uses: ./.github/actions
  with:
    job-status: ${{ job.status }}

# job2的通知步骤
- name: "testing ms"
  if: always()
  uses: ./.github/actions
  with:
    job-status: ${{ job.status }}

4. 可选优化:确保job2不受上游job执行结果影响

如果希望无论job1执行成功/失败,job2都能正常运行触发通知,给job2新增if: always()配置:

job2:
  runs-on: ubuntu-latest
  needs: job1
  if: always() # 新增该行
  steps:
    # 原有步骤不变

验证方式

修复后重新触发工作流,失败场景下即可正常收到Teams通知,可在Action运行日志中查看curl返回的HTTP状态码和响应内容排查剩余问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 18:48:01