Skip to content

feat(release): immediate "branch cut" Feishu card on both release cuts (with backport label) - #5323

Merged
lefarcen merged 1 commit into
mainfrom
feat/release-cut-feishu-early-notice
Jul 9, 2026
Merged

feat(release): immediate "branch cut" Feishu card on both release cuts (with backport label)#5323
lefarcen merged 1 commit into
mainfrom
feat/release-cut-feishu-early-notice

Conversation

@lefarcen

@lefarcen lefarcen commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Why

  • Use case. Watching the release Feishu group after wiring up the Thursday patch cadence, I noticed the group stays silent from the moment a release branch is cut until the full prerelease build finishes ~20–40 min later — that's when notify-release-feishu posts its download card. There's no signal in between that the cut even happened.
  • Pain. For both the Tuesday minor (cut-release) and the Thursday patch (cut-patch-release), the team wants to know immediately that the branch exists (and which backport label to use), without staring at Actions for half an hour waiting for the build.

What users will see

For the team in the release Feishu group: each release cut now posts two cards instead of one.

  1. Immediately (the moment the branch is pushed) — a green "🌿 已切出 release 分支 vX.Y.Z" card that states:
    • the branch and whether it's a 大版本 (minor) or 小版本 (patch),
    • the exact backport labelbackport release/vX.Y.Z — so people know which label to apply for backports,
    • a note that the prerelease build is running and a download card will follow.
  2. ~20–40 min later — the existing notify-release-feishu download card (macOS/Windows/Linux links + changelog), unchanged.

The Thursday patch workflow's eager card only fires on the happy (published) path, alongside its existing "⏭️ 已跳过" skip card.

Surface area

  • CLI / env var — edits the scheduled cut-release.yml and cut-patch-release.yml workflows only. No product UI/CLI surface.
  • None — two workflow steps + a topology assertion; reuses the existing feishu-notice.ts.

Implementation

Each cut workflow gains one Notify Feishu that the branch was cut step, placed after the branch push + backport-label creation, invoking the existing tools/release/src/notifications/feishu-notice.ts (imports only node:crypto, so the workflows' existing setup-node is all it needs — no pnpm install). Card body is lark_md with the branch link, cut type, and the backticked backport label.

Bug fix verification

Not a bug fix. Topology coverage added in e2e/tests/packaged-smoke-workflow.test.ts: asserts both workflows post the eager card after git push origin "$BRANCH", reuse feishu-notice.ts + the release webhook secret, name backport release/v${{ steps.ver.outputs.version }}, distinguish 大版本/小版本, and that the patch workflow's card is gated on the published (happy) path.

Validation

…ease cuts

Cutting a release branch (Tuesday minor via cut-release, Thursday patch via
cut-patch-release) pushes to release/**, which triggers notify-release-feishu to
build a full prerelease before it posts the download card — 20-40 minutes during
which the team has no signal the cut even happened.

Post an eager green "🌿 已切出 release 分支" card the moment the branch exists, from
the cut workflow itself, reusing feishu-notice.ts (node:crypto only, so the
existing setup-node suffices). The card names:
  - the branch and whether it is a 大版本 (minor) or 小版本 (patch),
  - the exact backport label (`backport release/vX.Y.Z`) so people know which
    label to apply for backports,
  - a note that the prerelease build is running and a download card will follow.

The download card from notify-release-feishu is unchanged; each cut now yields
an immediate ack card plus the eventual download card. The patch workflow's eager
card only fires on the happy (published) path, alongside the existing skip card.

Topology test asserts both workflows post the eager card after the branch push and
name the backport label.
@lefarcen
lefarcen requested a review from a team as a code owner July 9, 2026 03:44
@lefarcen
lefarcen requested a review from mrcfps July 9, 2026 03:57
@lefarcen lefarcen added size/S PR changes 20-100 lines risk/high High risk: apps/desktop, daemon, auth, migration, workflows, package deps type/feature New feature skip-validation Maintainer override: bot will not auto-add needs-validation on this PR. labels Jul 9, 2026

@mrcfps mrcfps left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@lefarcen I reviewed the changed release workflows and the focused e2e topology coverage. The new Feishu branch-cut notice is placed after the branch push and backport label creation, the patch workflow keeps the notice on the published happy path, and the card content reuses the existing signed Feishu notifier without adding dependency setup. I also checked the live PR metadata, prior feedback state, changed diff, git diff --check, and available CI/status output; no changed-range correctness or safety issues stood out. Thanks for tightening the release communication loop here.

🔁 Powered by Looper · runner=reviewer · agent=codex · An autonomous AI dev team for your GitHub repos.

@lefarcen
lefarcen added this pull request to the merge queue Jul 9, 2026
Merged via the queue into main with commit d41cdd9 Jul 9, 2026
27 checks passed
@lefarcen
lefarcen deleted the feat/release-cut-feishu-early-notice branch July 9, 2026 04:08
xxiaoxiong pushed a commit to xxiaoxiong/open-design that referenced this pull request Jul 13, 2026
…ease cuts (nexu-io#5323)

Cutting a release branch (Tuesday minor via cut-release, Thursday patch via
cut-patch-release) pushes to release/**, which triggers notify-release-feishu to
build a full prerelease before it posts the download card — 20-40 minutes during
which the team has no signal the cut even happened.

Post an eager green "🌿 已切出 release 分支" card the moment the branch exists, from
the cut workflow itself, reusing feishu-notice.ts (node:crypto only, so the
existing setup-node suffices). The card names:
  - the branch and whether it is a 大版本 (minor) or 小版本 (patch),
  - the exact backport label (`backport release/vX.Y.Z`) so people know which
    label to apply for backports,
  - a note that the prerelease build is running and a download card will follow.

The download card from notify-release-feishu is unchanged; each cut now yields
an immediate ack card plus the eventual download card. The patch workflow's eager
card only fires on the happy (published) path, alongside the existing skip card.

Topology test asserts both workflows post the eager card after the branch push and
name the backport label.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk/high High risk: apps/desktop, daemon, auth, migration, workflows, package deps size/S PR changes 20-100 lines skip-validation Maintainer override: bot will not auto-add needs-validation on this PR. type/feature New feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants