ci: release weekly from git history with git-cliff instead of release-please - #138
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Same release setup as qrcodets and react-native-toolbox (already released qrcodets v1.0.1 and react-native-toolbox v6.0.5 this way), adapted to the monorepo with one matrix job per plugin. It replaces release-please, whose release PRs are pushed with
GITHUB_TOKENand never get the required CI checks.How it works (
release.yml, Tuesdays 17:00 UTC + manual)For each plugin (
gulp-browser-sync,gulp-sharp):orhun/git-cliff-actionv4.9.1, pinned) computes the next version and release notes from conventional commits that touchplugins/<name>/**, since the last<name>-vX.Y.Ztag (same tag format as release-please).pnpm/setup(pnpm + Node.jslatest), build the plugin,pnpm version --no-git-tag-version,pnpm publish --publish-wait-timeout 600000(npm trusted publishing via OIDC; also replacescatalog:specifiers with real ranges in the published manifest), thengh release create <name>-vX.Y.Ztitled<name>: vX.Y.Zwith the generated notes. Nothing is committed back tomain.dry-run: true: compute versions and notes (job summary), build, and runpnpm publish --dry-run.Release rules (
cliff.toml)feat→ minor,!/BREAKING CHANGE→ major, everything else → patch.feat,fix,perf,refactor,docsandchoreare included in the release notes;ci,build,test,styleare skipped.Other changes
release-please-config.jsonand.release-please-manifest.json.CHANGELOG.mdfiles are frozen with a pointer to GitHub Releases (filtered per plugin); the READMEs link there too.package.jsonversions in the repo are no longer bumped; the published package gets the right version at publish time.Verification
Dry run on this branch: run 36636840034. Because the branch has a separate
docs:commit touching both plugins, both jobs computed a release (gulp-browser-sync-v1.0.2,gulp-sharp-v1.0.4), built, and stopped atSkip publishing ... (dry run).After squash-merge only the
ci:title lands onmain, so nothing is releasable yet (no plugin changes sincegulp-sharp-v1.0.3/gulp-browser-sync-v1.0.1); the first real release will happen with the next plugin change.