Projects / feishu-notify-action

CASE 04 / ACTION

feishu-notify-action

飞书 PR / 评审通知 GitHub Action

角色
独立设计与实现
时间
2026
状态
已发布
GitHub ActionsNode 20zodncc

Context

PR 与 review_requested 若只留在 GitHub 通知里,国内团队协作常希望同步到飞书群,并准确 @ 到评审人

Role & Scope

独立实现 Action:action.yml + 组装/校验/发送分层;ncc 打包 dist/index.js

Approach

  • 两种模式:普通事件用 title/message/link;review_requested 强制走模板变量,避免半套逻辑。
  • Fail-loud:zod 校验输入、事件与出站 payload;映射缺失即失败,不静默降级 @。
  • 图片路径显式化:有飞书应用凭证则上传 inline;私有 user-attachmentsgithub-token 解析签名 URL。

Implementation

index.js           读输入 → 校验 → 组装 → 发送
src/validate/      zod schemas
src/assemble/      模板 · review_requested 卡片 · img 解析
src/tool/          飞书 webhook/签名/图床 · GitHub 私有图 · YAML map

Node 20 运行时;node --test 单测。

Outcome

  • Workflow 一行 uses: z-ph/feishu-notify-action@v1 可接入。
  • 行为对运维友好:配置错误在 CI 日志里以 ::error:: 暴露。

Learnings

对接群机器人时,错误可见性比「尽量发送成功」更重要——静默吞掉错误会变成线上幽灵故障。