Skip to content

ci(release): thread Slack release notices under the start notice - #347

Merged
gorandodig merged 2 commits into
mainfrom
ci/slack-threads
Oct 30, 2026
Merged

gorandodig merged 2 commits into
mainfrom
ci/slack-threads

Conversation

@gorandodig

@gorandodig gorandodig commented Oct 27, 2026 •

Copy link
Copy Markdown
Member

Each release now posts one Slack message. The result notices reply in its thread, using the ts output of the start post.

  • Failure notices are also broadcast to the channel (reply_broadcast). Success stays in the thread and adds a ✅ reaction to the start notice. This needs the reactions:write scope on the Slack app; the step is non-fatal until it is granted.
  • If the start notice never posted, thread_ts renders as YAML null. The Slack client drops null fields, so notices post to the channel as before. An empty string would be sent as-is, which is why null is used.
  • thread_ts is quoted so YAML keeps the timestamp a string rather than a float.
  • Notices that can only fire before the start notice exists (failed checks or tests, and one-message paths) are unchanged.

Summary by CodeRabbit

  • Improvements
    • Build and publishing status notifications now appear in the related Slack thread when one exists.
    • When no start-notice thread is available, failure notifications are sent without a thread reference.
    • Pre-release and success notifications are grouped with related status updates in the thread.
    • Successful publishes add a check-mark reaction to the start notice when available.

Result notices reply in the start notice thread via its ts. Failures
are also broadcast to the channel. If the start post never happened,
thread_ts is null and notices post to the channel as before.
@coderabbitai

coderabbitai Bot commented Oct 27, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review.

Recent review info
Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 67e7fbeb-9c55-45b8-b2b0-b3a0b103a935
Commits

Reviewing files that changed from the base of the PR and between c19c8f6 and 26bdc31.

Files selected for processing: 1
  • .github/workflows/publish-to-pypi.yml

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 4 remain after this review.

Walkthrough

The PyPI publishing workflow passes the build-start Slack notice timestamp to release notifications. Outcome notices use the timestamp for threaded replies. After a successful publish, the workflow attempts to add a check-mark reaction when the timestamp is available.

Changes: PyPI release notifications

Layer / File(s) Summary
Expose the start-notice timestamp
.github/workflows/publish-to-pypi.yml
The build job identifies the start Slack notice and exports its timestamp. The notify job quotes a present timestamp or uses null when it is absent.
Thread release outcome notices
.github/workflows/publish-to-pypi.yml
Failure and success notices include the thread timestamp. Failure notices set reply_broadcast to true when a timestamp is present. After a successful publish, the workflow attempts to add a white_check_mark reaction when a timestamp exists. The commented-out Linear configuration lists both jobs as dependencies and includes the timestamp in its failure notice.

Priority: Low

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Feature

Possibly related PRs

  • Codeplain-ai/codeplain#342: Adds the Slack Action, notify job, and start-message timestamp output that this workflow change uses.

Suggested labels: github-actions

Suggested reviewers: zanjonke

Merge Risk: Minimal · up to 26bdc

The workflow change has no verified merge-blocking risk and is ready to merge.

Architecture risk: Low · up to 26bdc

The changed surface does not map to a changed system, dependency edge, entrypoint, or external dependency.

Changed systems: None identified.

Architecture concerns
No architecture-level concerns identified.

Review details

Before / after behavior

  • observed — Modified behavior in .github/workflows/publish-to-pypi.yml: The build job now exports the start Slack notification’s timestamp as slack-ts.
  • observed — Modified behavior in .github/workflows/publish-to-pypi.yml: The start Slack notification step now has the slack-start ID.
  • observed — Modified behavior in .github/workflows/publish-to-pypi.yml: The notify job now sets THREAD_TS from the build output, quoting a present timestamp and using null when it is absent.
  • observed — Modified behavior in .github/workflows/publish-to-pypi.yml: The build-failure Slack notice now includes the thread timestamp and sets reply_broadcast to true when the timestamp is not null.
Pre-merge checks: Passed 4
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title clearly and concisely describes the primary change: posting Slack release notices in the thread of the start notice.
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Finishing Touches
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

@gorandodig
gorandodig requested a review from hisenb3rg October 29, 2026 15:09
@gorandodig
gorandodig marked this pull request as ready for review October 29, 2026 15:09
Success replies stay in the thread, so a reaction marks the
top-level message too. It needs the reactions:write scope on the Slack
app. The step is non-fatal until that scope is granted.

@hisenb3rg hisenb3rg left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Looks good 👍

@gorandodig
gorandodig merged commit ef877d1 into main Oct 30, 2026
11 checks passed
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.

2 participants