feat(release): compact Slack QA section + @-mention flagged-PR authors#35815
feat(release): compact Slack QA section + @-mention flagged-PR authors#35815nollymar wants to merge 2 commits into
Conversation
The previous detailed Slack section grew too tall for the channel UI to
display inline — Slack auto-collapses messages over ~4000 chars, so the
list of flagged PRs ended up hidden behind a "Show more" link. The plain
`@author` text also didn't trigger Slack notifications, so the people
whose action was needed never knew.
Redesign:
• The Slack snippet is now just the counts (each linked to the
workflow run summary) and a cc line that mentions the authors of
flagged PRs.
• Mentions are real Slack `<@userid>` mentions when the GitHub login
is in `.github/data/slack-mappings.json`. Unmapped users fall back
to plain `@login` so the message still names them.
• The full detailed report (PR-by-PR tables) is written to
`$GITHUB_STEP_SUMMARY` via a new `--format markdown` so reviewers can
drill in from the workflow run page linked by the counts.
New CLI flags on release-qa-status:
--format markdown GitHub-flavored markdown report
--mappings PATH slack-mappings.json for GH→Slack ID resolution
--detail-url URL link target for each count in the slack output
Tests: 35/35 pass. New cases cover detailUrl wrapping, the cc line with
mapped + unmapped + deduped + case-insensitive matching, exclusion of
passed-bucket authors from the cc, and the markdown format.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Claude finished @nollymar's task in 1m 39s —— View job Code reviewSolid PR overall — well-factored, well-tested, and the split between compact Slack + detailed markdown is the right call. A few things to consider: 1)
|
Add stable HTML anchors before each populated bucket heading in the markdown step-summary, and have the Slack count cells link to those anchors instead of all pointing at the top of the run page. Auto-generated heading slugs include the count (e.g. "qa-failed-1") so they'd change every release; using explicit <a id="..."></a> markers keeps the anchors stable. Anchors: qa-failed | qa-missing | qa-orphan | qa-external. Empty buckets emit no anchor (the heading is also omitted), so a healthy release degrades cleanly to the all-clean summary message. Tests: 37/37 pass. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Summary
Follow-up to #35762. Two issues surfaced from the first real-release Slack notification:
@authortext wasn't real Slack mentions, so the people whose action was needed never got notified.Approach
Slack message stays compact. Just counts + a cc line:
.github/data/slack-mappings.json) get real<@USERID>mentions that actually notify. Unmapped users fall back to plain@loginso they're still named.:rotating_light:whenever any PR is in thefailedbucket.Detail moves to the workflow run summary. A new
--format markdownproduces a GitHub-flavored markdown report (tables per bucket, links to issues, label cells) written to\$GITHUB_STEP_SUMMARY. Reviewers land there by clicking any count in Slack.New CLI flags on
release-qa-statusWorkflow changes
The Report step in
cicd_6-release.ymlnow runs the script twice:--format markdown→ appended to\$GITHUB_STEP_SUMMARY--format slack --mappings ... --detail-url <run-url>→ injected intoSLACK_MESSAGEBoth calls are best-effort (
continue-on-error: true); a failure leaves the announcement intact.Validation
End-to-end against
v26.05.22-01with the real mappings:dsilvam,hassandotcms,fmontes, ...) become real Slack mentions.adrianjm-dotCMS,dario-daza,ihoffmann-dot) fall back to plain@login.Tests: 35/35 pass (previously 28/28). New cases cover detailUrl wrapping, mapped + unmapped + deduped + case-insensitive author resolution, exclusion of passed-bucket authors from the cc, and the markdown format.
Test plan
notify_slack=trueagainst a releaseslack-mappings.jsonfor any newly-contributing authors so they get real mentions next time🤖 Generated with Claude Code