Skip to content

chore: add bumpp and tag + GitHub Release to the release workflow - #20

Merged
fi3ework merged 7 commits into
mainfrom
chore/release-tooling
Aug 19, 2026
Merged

chore: add bumpp and tag + GitHub Release to the release workflow#20
fi3ework merged 7 commits into
mainfrom
chore/release-tooling

Conversation

@fi3ework

Copy link
Copy Markdown
Member

Release tooling, modeled on rspack-contrib/storybook-rsbuild (`bumpp` for the version commit, `changelogithub` for the GitHub Release).

Changes

  • `pnpm bump` — root script running bumpp with `bump.config.ts`: bumps only `packages/vscode/package.json` (the one versioned artifact), commits `chore(vscode): release vX.Y.Z`, no tag / no push. Verified locally: `pnpm bump --release patch --yes` produced exactly that commit touching one file (reverted).
  • `release.yml` — new `github_release` job after the six-target matrix, real runs only (`!inputs.dry_run`), `contents: write` scoped to that job:
    1. downloads the six VSIX artifacts,
    2. reads the version from the manifest and pushes `vX.Y.Z` at `github.sha` — idempotent (skips if the tag already exists, so a re-run after a flaky marketplace publish is safe alongside `--skip-duplicate`),
    3. `npx changelogithub@15.0.4 --to vX.Y.Z --assets 'vsix/*.vsix'` — release notes from the conventional commits since the previous tag, VSIX files attached. Dry-run against this repo with a local `v0.1.0` tag renders 17 commits grouped into Features / Bug Fixes / Performance.
  • Docs — CONTRIBUTING.md gains a Releasing section; AGENTS.md workflow points to it and forbids tagging/publishing by hand.

Version stays `0.1.0`; `main` remains the release candidate.

Verification

  • `pnpm lint && pnpm fmt:check` green (bump.config.ts is covered by `rs lint --type-check`).
  • `release.yml` parses; job graph: `release_vscode_extension` (matrix) → `github_release`.
  • `actions/download-artifact@v8.0.1` pinned by SHA, compatible with the existing `upload-artifact@v7`.

- `pnpm bump` (bumpp) bumps packages/vscode/package.json and commits
  `chore(vscode): release vX.Y.Z`; no tag, no push — the release workflow
  tags the commit it actually published from.
- release.yml gains a final job that, after every target published, pushes
  the `vX.Y.Z` tag (idempotent) and creates the GitHub Release through
  changelogithub with notes from the conventional commits since the previous
  tag and the six VSIX files attached. Skipped on dry runs.
- Document the flow in CONTRIBUTING.md and point to it from AGENTS.md.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ac78060a15

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread package.json
Comment thread .github/workflows/release.yml
Comment thread .github/workflows/release.yml Outdated
Comment thread pnpm-lock.yaml Outdated
… bump

The first release lands through `pnpm bump` so main keeps an explicit
`v0.1.0` bump commit.
Root scripts are pnpm -r fan-outs and must not reach into a package
(AGENTS.md); bumpp and its config now live in packages/vscode and the root
`bump` script is `pnpm -r run bump`. Verified the interactive prompt still
gets a TTY through the fan-out for a single package.
- preflight job fails a non-dry dispatch from any ref but main (gh workflow
  run --ref accepts branches and tags); dry runs stay allowed anywhere.
- The tag step is idempotent only when the existing tag points at this
  commit; a tag on another commit means the version was never bumped, and
  the run fails instead of attaching mismatched VSIX assets.
- bumpp ^11.1.0 (engines >=20.19) instead of 12 (^22.18 || ^24.11 || >=26),
  matching the root Node floor of >=22.12.
All packages share one version (as in rspack-contrib/storybook-rsbuild), so
bumpp lives at the root with files: packages/*/package.json and the VS Code
manifest as the reference version. AGENTS.md records this as the one
repo-level exception to the fan-out rule: no per-package script can bump
several packages to the same version in one commit.
bumpp derives currentVersion from the globbed files, so reading packages/vscode/package.json to seed it was redundant and hard-coded a reference package the lockstep policy says does not exist. fetch-tags is dead config under fetch-depth: 0 (checkout takes the all-history refspec and never reads it), the event_name guard was tautological against a dispatch-only trigger, and the Report step, the ls -la and the banner comment were noise. Docs: CONTRIBUTING is the single place the release procedure is described.
@fi3ework
fi3ework enabled auto-merge (squash) August 19, 2026 03:17
@fi3ework
fi3ework merged commit ebe7b87 into main Aug 19, 2026
3 checks passed
@fi3ework
fi3ework deleted the chore/release-tooling branch August 19, 2026 03:17
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