Release with release-please
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 15/100
Research direction
Start with the plan's first item: jwk-loader 1.3.0 must publish through release-please before this setup is copied. The work touches lib/jwt/version.rb (MAJOR/MINOR/TINY annotations), push_gem.yml (adding workflow_call and workflow_dispatch), a new release-please.yml, and CONTRIBUTING.md plus the PR template. Done means the first release-please release PR, tag, GitHub release and RubyGems gem all succeed after the manual steps are removed.
Written by the indexing model from the issue text.
Description
Releasing is manual today: bump version.rb right after each release, add a changelog row in every PR, tag the release by hand, and create the GitHub release by hand. release-please automates all of that from commit messages. It keeps a release PR open, and merging that PR tags the release, creates the GitHub release with its changelog section, and publishes the gem. anakinj/jwk-loader already releases this way, so its config and workflows are the starting point.
Start this after 3.3.1 is released the current way. None of the commits since v3.3.0 use conventional titles, so release-please would generate an empty changelog for them, and releasing first gives a clean cut-over.
Plan
- Wait for jwk-loader 1.3.0 to publish through release-please. That gem's publish job hasn't succeeded on a real release yet. If it fails, fix it there before copying the setup.
- Release 3.3.1 the current way.
- Require conventional PR titles. Pull requests are squash merged with the PR title as the commit message, so the title is what release-please reads. A PR adding a title check is ready, together with a
ciprefix for Dependabot and documentation inCONTRIBUTING.mdand the PR template. Once it's merged, make the check a required status check onmain. - Add the release-please config:
release-type: ruby,include-v-in-tag: trueso tags stayvX.Y.Z, and a manifest set to3.3.1. Usechangelog-sectionsfor the changelog format described under Decisions. - Make the version file updatable.
lib/jwt/version.rbuses separateMAJOR,MINORandTINYconstants, which the Ruby updater most likely doesn't rewrite. Add the genericx-release-please-major,-minorand-patchannotations to those lines and list the file underextra-files, rather than restructuring it. - Publish from the release job. Add
release-please.yml, and givepush_gem.ymlaworkflow_calltrigger so the release job can call it, plusworkflow_dispatchwith a tag input to re-publish an existing tag if publishing fails. Tags created withGITHUB_TOKENdon't trigger other workflows, so the tag trigger alone won't fire. That keeps the existing tag and version check, build, push and wait steps. - Check the RubyGems trusted publishing role. The policy behind
RUBYGEMS_PUSH_ROLEmay only allow tag refs orpush_gem.yml, and publishing from a reusable workflow called onmainmay need it widened. - Dry run before merging with the
release-pleaseCLI's--dry-run, to confirm it bumps the version constants and writes the changelog as intended. - Remove the manual steps: the
NEXTchangelog section and itsYour contribution hereplaceholders, the changelog row requirement inCONTRIBUTING.mdand the PR template, and the manual release steps. release-please adds new sections under# Changelog. - Confirm the first release: the release PR, the tag, the GitHub release and the gem on RubyGems.
Decisions
- Changelog format (decided): release-please's default changelog, with custom sections.
changelog-sectionsmapsfeatto Features,fixandperfto Fixes and enhancements, andrevertto Reverts, and hidesrefactor,docs,test,ci,buildandchore. Entries are taken from PR titles, so titles are worth editing before merging, and a user-visible change needs afeatorfixtitle to appear. Authors are no longer credited in the changelog or the GitHub release. If that's missed,changelog-type: githubbrings credit back with one config change. - Release names. GitHub releases are named
jwt-3.3.0today, and release-please will probably name themv3.4.0. Check whether that matters to anyone, and whether the config can keep the current name. - CI on release PRs. release-please opens them with
GITHUB_TOKEN, so CI won't run on them. They only change the version and changelog, so that's probably fine. Otherwise use a GitHub App token. 2-10-stable. Keep releasing 2.x manually for now. release-please can manage a second branch later if needed.
Posted by Claude on behalf of @anakinj.
- Dominant language
- Ruby
- Stars
- 3.7k
- Forks
- 381
- Avg merge
- 17h 10m
- Merged PRs (30d)
- 11
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from jwt/ruby-jwt
-
Difficulty 3/5 1-2 days Newbie friendliness 68/100
jwt/ruby-jwt#743 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
jwt/ruby-jwt#723 · 2 comments ·
Maintainers usually reply within 1 day
-
feature
Difficulty 5/5 Over a week Newbie friendliness 35/100
jwt/ruby-jwt#428 · 7 comments · 1 reaction ·
Maintainers usually reply within 1 day
-
enhancement feature help wanted up for grabs
Difficulty 5/5 Over a week Newbie friendliness 25/100
jwt/ruby-jwt#80 · 11 comments · 8 reactions ·
Maintainers usually reply within 1 day
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
swombat/souls-house#770 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
riverqueue/river#1576 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 90/100
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
presidentbeef/brakeman#2063 ·