Skip to content

DEVEX-1654: parse rt tag format in deploy notifications (Slack + Jellyfish)#136

Draft
pdodgen-revparts wants to merge 1 commit into
mainfrom
DEVEX-1654-notification-tag-parsers
Draft

DEVEX-1654: parse rt tag format in deploy notifications (Slack + Jellyfish)#136
pdodgen-revparts wants to merge 1 commit into
mainfrom
DEVEX-1654-notification-tag-parsers

Conversation

@pdodgen-revparts

@pdodgen-revparts pdodgen-revparts commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

Phase 4 of Release Train v2 (DEVEX-1579 / DEVEX-1654). Self-contained.

What changes

Both slack-deploy-notification.yaml and jellyfish-deploy-notification.yaml gain a parse step that classifies image_tag into v2 / v1 / plain / unknown:

Tag Format Slack summary
v4.7.0-rc.2026-06-18.3 v2 (RT v2) train 2026-06-18 · rc.3
v4.7.0-rc.7 v1 legacy rc.7 (legacy v1)
v4.7.0 plain clean release
anything else unknown (the tag, passthrough)

Slack message now reads listings-url-service deployed — train 2026-06-18 · rc.3 instead of just the bare tag. Captains see the train + iter at a glance in #releases.

Jellyfish event name field gets the same parenthetical suffix; reference_id is unchanged so existing dashboards don't break.

Why now

Dual-format parsing is a stated DEVEX-1654 deliverable. Landing it before any v2 train cuts means the first real RT v2 promote will already surface 'rc.X of train YYYY-MM-DD' in #releases. Without this PR the Slack notification would just show the bare v4.7.0-rc.2026-06-18.3 string, which is functional but not glanceable.

Risk

Low. Both workflows are reusable (workflow_call). Existing callers don't change shape. If the parse step's regex misses an edge case, it falls into the unknown branch and the notification still fires with the raw tag — no regression vs. today.

Not in this PR

  • The captain-handbook dashboard that plots iter@promotion per train (Phase 5 / DEVEX-1655).
  • Removal of the v1 (legacy) format support post-Phase 6 — kept here so the dual window is supported.

Phase 4 of Release Train v2 (DEVEX-1654). Adds a parse step to both
slack-deploy-notification.yaml and jellyfish-deploy-notification.yaml
that classifies the image_tag input into one of:

* v2 (RT v2):  vX.Y.Z-rc.<YYYY-MM-DD>.<iter>  → captures train_date + iter
* v1 (legacy): vX.Y.Z-rc.<iter>               → captures iter
* plain:       vX.Y.Z                          → 'clean release'
* unknown:     anything else                   → passthrough

Slack message now reads, e.g.,
  'listings-url-service deployed — train 2026-06-18 · rc.3'
instead of just the bare tag string. Captains can read the train and rc
iter at a glance from #releases.

Jellyfish event 'name' field gets a parenthetical suffix containing
train + iter. Useful for the Phase 6 captain-handbook dashboard plotting
iter@promotion per train per app over time. The reference_id is
unchanged so existing dashboards don't break.

Dual-format support is the migration-window concern from DEVEX-1654:
during Phase 3 rollout, both v1 and v2 tags coexist; parsers handle
both without an if/else at the caller layer.

Verified the regex against likely tag formats:
  v4.7.0-rc.2026-06-18.3  → v2, train=2026-06-18, iter=3
  v4.7.0-rc.7             → v1, iter=7
  v4.7.0                  → plain
  v4.7.0-rt.147.rc.3      → unknown (the abandoned spec format)
@cursor

cursor Bot commented Jun 22, 2026

Copy link
Copy Markdown

PR Summary

Low Risk
Notification-only changes to reusable workflows; parse failures degrade to today’s behavior with the raw tag.

Overview
Adds a parse step to the reusable Slack and Jellyfish deploy notification workflows so image_tag is classified as RT v2 (vX.Y.Z-rc.YYYY-MM-DD.iter), legacy v1 RC, plain semver, or unknown.

Slack notifications now include a short summary (e.g. train 2026-06-18 · rc.3) in the message text and block body instead of only the raw tag. Jellyfish deployment event name gets the same train/iter context in a parenthetical suffix; reference_id is unchanged.

Non-matching tags still notify: Slack falls back to the raw tag or “clean release”; Jellyfish leaves the name suffix empty.

Reviewed by Cursor Bugbot for commit e8c11c2. Bugbot is set up for automated code reviews on this repo. Configure here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant