Skip to content

ci(release): manual workflow_dispatch release pipeline#7

Merged
protonspy merged 1 commit into
mainfrom
feat/manual-release-pipeline
May 31, 2026
Merged

ci(release): manual workflow_dispatch release pipeline#7
protonspy merged 1 commit into
mainfrom
feat/manual-release-pipeline

Conversation

@protonspy
Copy link
Copy Markdown
Owner

Summary

Makes shipping a new version a deliberate, manual action. The release workflow no longer fires on push (tag or main) — it runs only via workflow_dispatch, takes the version as an input, and runs the complete pipeline end-to-end.

How to release now

From the Actions tab → release → Run workflow (enter vX.Y.Z), or:

gh workflow run release.yml --field version=v0.1.3
# convenience wrapper:
make release VERSION=v0.1.3

Pipeline (one manual run)

validate version → CI gate (Go + mcp-server tests) → cross-platform binaries → publish all 7 npm packages (launcher + 5 platform binaries + csdd-mcp, same version) → tag the commit + GitHub Release.

Changes

  • .github/workflows/release.yml
    • on: push (main + tags) → on: workflow_dispatch with a required version input.
    • Dropped the rolling "latest" pre-release (it was the only thing tied to main pushes; releasing is now fully manual).
    • Version flows from the input (passed via env vars to avoid shell injection); a validate job rejects anything that isn't vX.Y.Z.
    • The tag + GitHub Release are created only after npm publish succeeds (release needs npm-publish), so a failed publish never leaves a dangling tag/release.
  • Makefilemake release VERSION=vX.Y.Z now dispatches the workflow (gh workflow run release.yml --field version=…) instead of pushing a tag.

Notes

  • make release / gh workflow run release.yml only work after this PR merges (a workflow_dispatch workflow must exist on the default branch to be dispatchable).
  • The npm publish still needs NPM_TOKEN to be an Automation token (otherwise it fails with EOTP, as the v0.1.2 attempt did).

🤖 Generated with Claude Code

Releasing a new version is now a deliberate manual action instead of firing on
a tag/branch push. The release workflow runs only via `workflow_dispatch` (the
Actions tab, `gh workflow run`, or `make release VERSION=vX.Y.Z`), takes the
version as an input, and runs the full pipeline: validate → CI gate →
cross-platform binaries → publish all 7 npm packages → tag + GitHub Release.

- release.yml: replace the push (main + tags) triggers with workflow_dispatch +
  a required `version` input; drop the rolling "latest" pre-release; version
  comes from the input (passed via env to avoid shell injection). The GitHub
  release/tag is created only after npm publishing succeeds.
- Makefile: `make release VERSION=vX.Y.Z` now dispatches the workflow
  (`gh workflow run release.yml --field version=…`) instead of pushing a tag.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@protonspy protonspy merged commit 90d22f9 into main May 31, 2026
2 checks passed
@protonspy protonspy deleted the feat/manual-release-pipeline branch May 31, 2026 21:00
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