Skip to content
Merged
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
07746f2
ci: add 3-stage release workflow (prepare / review / publish)
nebasuke Feb 22, 2026
9f2e990
ci: add temporary pull_request trigger to release-v2 for testing
nebasuke Feb 22, 2026
269ad48
fix(ci): fix empty matrix on PR trigger and checksum verification in …
nebasuke Feb 22, 2026
07bdd9d
fix(ci): sanitize release-suffix for PR builds to avoid slash in path
nebasuke Feb 22, 2026
2786c5a
fix(ci): simplify release-suffix to only use ref_name for tags
nebasuke Feb 22, 2026
fd0da8b
fix(ci): add if-guard to review job so it runs when prepare succeeds
nebasuke Feb 23, 2026
d3e2726
ci: gate release-v2 PR dry-runs on `ci:release` label
nebasuke Feb 23, 2026
fb69bed
fix(ci): pin publish-unit-test-result-action to v2.23.0
nebasuke Feb 23, 2026
6c65a62
ci: merge release-v2 into release.yaml and simplify job dependencies
nebasuke Feb 23, 2026
c47f6b8
ci: address Copilot review comments on release workflow
nebasuke Feb 24, 2026
60c83f6
ci: harden release workflow from PR #237 review
nebasuke Feb 24, 2026
a097d8f
ci: add Slack notifications to release workflow
nebasuke Feb 24, 2026
c501a8c
ci: add temporary test Slack notification for PR dry-runs
nebasuke Feb 24, 2026
eb9f67e
ci: move test Slack notification to run right after label-check
nebasuke Feb 24, 2026
d1731c9
ci: remove temporary test Slack notification job
nebasuke Feb 24, 2026
37b03d5
ci: move continue-on-error to step level on notify-deploy
nebasuke Feb 24, 2026
fa956b5
Merge branch 'main' into ci/release-slack-notifications
hedgar2017 Feb 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
115 changes: 114 additions & 1 deletion .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -362,6 +362,69 @@ jobs:
echo "=== Binary sizes ==="
find bundle -type f -not -name '*.sha256' -exec ls -lh {} \; | awk '{print $5, $9}'

# ───────────────────────────────────────────────
# Stage 2.5: Notify — Slack notification before environment gate
# ───────────────────────────────────────────────
Comment thread
nebasuke marked this conversation as resolved.

notify-deploy:
name: Notify pre-deploy to Slack
runs-on: ubuntu-24.04
needs: [prepare, review]
if: >-
!cancelled()
&& needs.prepare.result == 'success'
&& needs.review.result == 'success'
&& github.event_name != 'pull_request'
steps:
- name: Notify pre-deploy
continue-on-error: true
uses: slackapi/slack-github-action@91efab103c0de0a537f72a35f6b8cda0ee76bf0a # v2.1.1
with:
webhook: ${{ secrets.PUBLISHING_NOTIFICATIONS_SLACK_WEBHOOK_URL }}
webhook-type: incoming-webhook
payload: |
{
"text": "solx release — Review requested: ${{ needs.prepare.outputs.release_title }}",
"blocks": [
{
"type": "header",
"text": {
"type": "plain_text",
"text": "solx release — Review requested"
}
},
{
"type": "section",
"fields": [
{
"type": "mrkdwn",
"text": "*Release:*\n`${{ needs.prepare.outputs.release_title }}`"
},
{
"type": "mrkdwn",
"text": "*Type:*\n${{ github.ref_type == 'tag' && 'Production release' || 'Internal / nightly release' }}"
}
]
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*Commit:* <${{ github.event.head_commit.url || format('{0}/{1}/commit/{2}', github.server_url, github.repository, github.sha) }}|View commit>\n*Approve:* <${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|Open workflow run>"
}
},
{
"type": "context",
"elements": [
{
"type": "mrkdwn",
"text": "Triggered by *${{ github.actor }}* via `${{ github.event_name }}`"
}
]
}
]
}

# ───────────────────────────────────────────────
# Stage 3: Publish
# ───────────────────────────────────────────────
Expand All @@ -372,7 +435,7 @@ jobs:
attestations: write
contents: write
name: Publish release
needs: [prepare, review, get-previous-release]
needs: [prepare, review, get-previous-release, notify-deploy]
# Run as long as prepare and review succeeded — tolerate get-previous-release
# failure so a transient GitHub API issue doesn't silently skip the release.
if: >-
Comment thread
nebasuke marked this conversation as resolved.
Expand All @@ -384,6 +447,56 @@ jobs:
runs-on: ubuntu-24.04
steps:

- name: Notify deployment approved to Slack
if: github.event_name != 'pull_request'
continue-on-error: true
uses: slackapi/slack-github-action@91efab103c0de0a537f72a35f6b8cda0ee76bf0a # v2.1.1
with:
webhook: ${{ secrets.PUBLISHING_NOTIFICATIONS_SLACK_WEBHOOK_URL }}
webhook-type: incoming-webhook
payload: |
{
"text": "solx release — Deployment starting: ${{ needs.prepare.outputs.release_title }}",
"blocks": [
{
"type": "header",
"text": {
"type": "plain_text",
"text": "solx release — Deployment starting"
}
},
{
"type": "section",
"fields": [
{
"type": "mrkdwn",
"text": "*Release:*\n`${{ needs.prepare.outputs.release_title }}`"
},
{
"type": "mrkdwn",
"text": "*Type:*\n${{ github.ref_type == 'tag' && 'Production release' || 'Internal / nightly release' }}"
}
]
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*Run:* <${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|Open workflow run>"
}
},
{
"type": "context",
"elements": [
{
"type": "mrkdwn",
"text": "Triggered by *${{ github.actor }}*"
}
]
}
]
}

- name: Checkout source
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5
with:
Expand Down
Loading