Skip to content

ci: release weekly from git history with git-cliff instead of release-please - #137

Merged
panz3r merged 1 commit into
mainfrom
ci/weekly-release
Sep 29, 2026
Merged

panz3r merged 1 commit into
mainfrom
ci/weekly-release

Conversation

@panz3r

@panz3r panz3r commented Sep 29, 2026

Copy link
Copy Markdown
Member

Same release setup as gulp-plugins (forwardsoftware/gulp-plugins#138), qrcodets and react-native-toolbox, with one matrix job per plugin. It replaces release-please, whose release PRs are pushed with GITHUB_TOKEN and never get the required CI checks.

How it works (release.yml, Tuesdays 17:00 UTC + manual)

For each plugin (reveal.js-caffeine → plugins/caffeine, reveal.js-joycontroller → plugins/joycontroller, reveal.js-qrcodes → plugins/qrcodes):

  1. git-cliff (orhun/git-cliff-action v4.9.1, pinned) computes the next version and release notes from conventional commits that touch the plugin folder, since the last <name>-vX.Y.Z tag (same tag format as release-please).
  2. If nothing is releasable (no notes, or the tag already exists) the job stops.
  3. Otherwise: pnpm/setup (pnpm + Node.js latest), build the plugin, pnpm version --no-git-tag-version, pnpm publish --publish-wait-timeout 600000 (npm trusted publishing via OIDC; replaces catalog: specifiers in the published manifest), then gh release create <name>-vX.Y.Z titled <name>: vX.Y.Z with the generated notes. Nothing is committed back to main.
  4. A published version is skipped on rerun, so a failed run can be retried safely.
  5. Manual runs accept dry-run: true: compute versions and notes (job summary), build, and run pnpm publish --dry-run.

Release rules (cliff.toml, shared with gulp-plugins)

  • feat → minor, ! / BREAKING CHANGE → major, everything else → patch.
  • feat, fix, perf, refactor, docs and chore are included in the release notes; ci, build, test, style are skipped.
  • Only changes inside the plugin folder count; root changes (lockfile, catalog, CI) do not cut releases.

Other changes

  • Remove release-please-config.json and .release-please-manifest.json.
  • Plugin CHANGELOG.md files are frozen with a pointer to GitHub Releases (filtered per plugin); the READMEs link there too.
  • package.json versions in the repo are no longer bumped; the published package gets the right version at publish time.

Verification

Dry run on this branch: run 36641052114. Each plugin has one releasable commit since its last tag (chore: upgrade babel to v8 #115), so all three jobs computed a release (reveal.js-caffeine-v1.1.1, reveal.js-joycontroller-v1.0.1, reveal.js-qrcodes-v1.1.1), built, and stopped at Skip publishing ... (dry run). The first real run after merge will publish these three versions.

@panz3r
panz3r merged commit cddb2a0 into main Sep 29, 2026
8 checks passed
@panz3r
panz3r deleted the ci/weekly-release branch September 29, 2026 22:48
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