Bake::Gem::GitHub
Reviewed GitHub releases for Ruby gems, using bake-gem for branch preparation, independent content validation, and clean builds.
Motivation
Maintainers need a shared release process that they can run locally or through GitHub. This gem prepares release pull requests for review, validates their generated content, and publishes the merged release through GitHub Actions using RubyGems Trusted Publishing. Retained artifacts and attestations allow interrupted releases to resume using the original verified bytes.
Usage
Please browse the reference index or refer to the guides below.
Getting Started
This guide explains how to configure reviewed Ruby gem releases and prepare the first release PR with bake-gem-github.
Preparing Releases
This guide explains how to request a release PR, resume interrupted preparation, and refresh generated content when the default branch changes.
Verifying Releases
This guide explains how publishing binds a gem to its reviewed source and how to verify the downloaded artifact and attestations.
Recovering Releases
This guide explains how to resume an interrupted publishing workflow using the original gem and its verification evidence.
Releases
Please browse the releases for more details.
v0.5.0
- Support rebase merging by requiring each release PR to contain exactly one commit, while leaving ordinary PRs unrestricted. Generated rules allow merge, squash, and rebase methods according to repository settings.
v0.4.0
- Reject Secret environment reviewer teams before applying release settings, and verify that GitHub retained the requested reviewers and existing protections after updating the environment.
v0.3.1
- Publish validated release PRs from pushes to the default branch, retaining the exact merged commit and environment approval without requiring
pull_request_target. - Queue publishing jobs without replacing pending releases when later changes land.
v0.3.0
- Configure publishing environment reviewers through release setup while preserving existing environment protections.
- Stop generating
.github/releasing.md; release instructions are maintained in the shared guide and agent context. - Resume interrupted release preparation and explicitly refresh stale release PRs while preserving their previous commits.
- Preserve all release files in one archive before individual asset uploads, so reruns can recover interrupted drafts.
v0.2.0
- Use only the version tag for GitHub release titles.
v0.1.0
- Include the version's release notes in GitHub releases using
bake-releases. - Update generated release files in the working tree with
gem:github:setup:update.
v0.0.5
- Preserve and recover release files even when GitHub's release list is stale.
v0.0.4
- Preserve verified release files in a draft GitHub release before uploading to RubyGems, so reruns can recover when Actions artifacts disappear.
- Wait for RubyGems registry propagation before finalizing releases.
v0.0.1
- Initial implementation.
Contributing
We welcome contributions to this project.
- Fork the repository.
- Create your feature branch (
git checkout -b my-new-feature). - Commit your changes (
git commit -am 'Add some feature.'). - Push to the branch (
git push origin my-new-feature). - Create a new pull request.
Running Tests
To run the test suite:
$ bundle exec sus
Making Releases
To prepare a release branch and open a pull request from an up-to-date main:
$ bundle exec bake gem:github:release:patch # or minor or major
See bake-gem-github for setup, remote releases, and recovery.
Developer Certificate of Origin
In order to protect users of this project, we require all contributors to comply with the Developer Certificate of Origin. This ensures that all contributions are properly licensed and attributed.
Community Guidelines
This project is best served by a collaborative and respectful environment. Treat each other professionally, respect differing viewpoints, and engage constructively. Harassment, discrimination, or harmful behavior is not tolerated. Communicate clearly, listen actively, and support one another. If any issues arise, please inform the project maintainers.