Skip to content

refactor: trigger releases via workflow dispatch#92

Merged
ewels merged 1 commit intomainfrom
refactor/release-workflow
Apr 9, 2026
Merged

refactor: trigger releases via workflow dispatch#92
ewels merged 1 commit intomainfrom
refactor/release-workflow

Conversation

@ewels
Copy link
Copy Markdown
Member

@ewels ewels commented Apr 9, 2026

Summary

  • Releases are now triggered via workflow dispatch (GitHub UI or gh workflow run) instead of tag push
  • All builds (binaries, Docker, SIMD Docker) must pass before any irreversible action
  • Tag, GitHub release, and crates.io publish only happen after all builds succeed
  • Dev Docker images (dev, dev-avx2, etc.) still built on every push to main

Job dependency graph

check-release                     (detects workflow_dispatch, reads version from Cargo.toml)
├── build-binaries                (always, uploads as GH Actions artifacts)
├── docker-build → docker-merge   (always)
└── docker-build-simd             (always)
        │
        ▼ all builds pass
create-tag-and-release            (release only: creates git tag + draft GH release)
├── upload-binaries               (release only: attaches artifacts to release)
└── publish-crate                 (release only: publishes to crates.io)
        │
        ▼
publish-release                   (marks release as non-draft)

Test plan

  • Push to main — only dev Docker images built, no tag/release/crate
  • Trigger workflow dispatch — all builds run, then tag + release + crate publish

🤖 Generated with Claude Code

@ewels ewels force-pushed the refactor/release-workflow branch from 22033b6 to 8e8fb14 Compare April 9, 2026 11:07
@ewels ewels changed the title refactor: trigger releases from [release] commit, not tag push refactor: trigger releases via workflow dispatch Apr 9, 2026
@ewels ewels force-pushed the refactor/release-workflow branch 2 times, most recently from 7ee1adc to d82d480 Compare April 9, 2026 11:12
Restructure the release workflow so that all builds (binaries + Docker)
must succeed before any irreversible action happens. Previously, pushing
a tag would immediately start creating releases and publishing to
crates.io in parallel with builds, so a Docker failure could leave a
half-finished release with an irrevocable crates.io publish.

New flow:
- Trigger on push to main only (tag trigger removed)
- A [release] marker in the commit message signals a release
- All builds run first (binaries, Docker, SIMD Docker)
- Only after all pass: create git tag, draft release, upload artifacts,
  publish to crates.io, and finally mark the release as non-draft
- Dev Docker images still built on every main push

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@ewels ewels force-pushed the refactor/release-workflow branch from d82d480 to 0e25670 Compare April 9, 2026 11:14
@ewels ewels merged commit 4b8f51e into main Apr 9, 2026
7 checks passed
@ewels ewels deleted the refactor/release-workflow branch April 9, 2026 11:14
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