build: semi-automated release process - #80
Conversation
Up to standards ✅🟢 Issues
|
f94b6a6 to
e19047f
Compare
Signed-off-by: Amauri Bizerra <10775696+extern-c@users.noreply.github.com>
Signed-off-by: Amauri Bizerra <10775696+extern-c@users.noreply.github.com>
Signed-off-by: Amauri Bizerra <10775696+extern-c@users.noreply.github.com>
Signed-off-by: Amauri Bizerra <10775696+extern-c@users.noreply.github.com>
There was a problem hiding this comment.
the release process looks very promising. 👍
Release documentation will be added in a follow-up PR.
Docs shall happen when changes happen.
Could you please add some docs how this all works and how it is triggered?
This might go here: CONTRIBUTING.md section "To release a new version".
You might want to remove the "Manual process" and add a "Semi-Automated process" or whatever sounds appropriate
please also add a description of the build changes to CHANGELOG.md
| ruby-version: ruby | ||
| bundler-cache: false | ||
| - name: "Push gem to RubyGems" | ||
| uses: rubygems/release-gem@6317d8d1f7e28c24d28f6eff169ea854948bd9f7 # v1.2.0 |
There was a problem hiding this comment.
please add a comment with the action's URL for easier docks lookup when maintaining.
There was a problem hiding this comment.
Addressed in da61dd3. Thanks for the suggestion.
|
|
||
| on: | ||
| push: | ||
| tags: ["v*"] |
There was a problem hiding this comment.
maybe better go with
| tags: ["v*"] | |
| tags: ["v*.*.*"] |
There was a problem hiding this comment.
Addressed in 3e9e0ba. Thanks for the suggestion.
Signed-off-by: Amauri Bizerra <10775696+extern-c@users.noreply.github.com>
Signed-off-by: Amauri Bizerra <10775696+extern-c@users.noreply.github.com>
Signed-off-by: Amauri Bizerra <10775696+extern-c@users.noreply.github.com>
Signed-off-by: Amauri Bizerra <10775696+extern-c@users.noreply.github.com>
Signed-off-by: Amauri Bizerra <10775696+extern-c@users.noreply.github.com>
Signed-off-by: Amauri Bizerra <10775696+extern-c@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Adds a new GitHub Actions workflow to run tests and perform a semi-automated release flow on version tag pushes, targeting RubyGems (trusted publishing) and GitHub Releases.
Changes:
- Introduces a
Releaseworkflow triggered on version tag pushes. - Adds a
testjob that runs the rake default task on Ruby 3.3.9 before releasing. - Adds jobs to publish to RubyGems via trusted publishing and create a GitHub Release with generated notes.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Signed-off-by: Amauri Bizerra <10775696+extern-c@users.noreply.github.com>
Signed-off-by: Amauri Bizerra <10775696+extern-c@users.noreply.github.com>
|
will review in a week, please ping me if this is ready. |
| # Determine release type from tag suffix | ||
| if [[ "$GITHUB_REF_NAME" =~ -(alpha|beta|rc|pre)[0-9.]*$ ]]; then | ||
| FLAGS+=("--prerelease") | ||
| fi |
There was a problem hiding this comment.
@jkowalleck, do you want to support dot-separated prerelease tags (e.g. v1.2.3.pre.1)?
There was a problem hiding this comment.
just go with any standard release system that is used in the ruby world.
Signed-off-by: Amauri Bizerra <10775696+extern-c@users.noreply.github.com>
Signed-off-by: Amauri Bizerra <10775696+extern-c@users.noreply.github.com>
Signed-off-by: Amauri Bizerra <10775696+extern-c@users.noreply.github.com>
I've updated |
Signed-off-by: Amauri Bizerra <10775696+extern-c@users.noreply.github.com>
Signed-off-by: Amauri Bizerra <10775696+extern-c@users.noreply.github.com>
@jkowalleck, this is now ready for review. |
There was a problem hiding this comment.
⚠️ Not ready to approve
The workflow’s prerelease classification does not match the documented “supports pre-releases” behavior (and there’s a potential mismatch with the issue requirement about CI tagging releases).
Review details
Comments suppressed due to low confidence (3)
.github/workflows/release.yml:94
- Pre-release detection only handles hyphenated suffixes (e.g.
-rc1). Tags likev1.2.3.pre.1(called out as supported in docs/CHANGELOG) will not be marked as--prereleaseon the GitHub Release.
# Determine release type from tag suffix
if [[ "$GITHUB_REF_NAME" =~ -(alpha|beta|rc|pre)[0-9.]*$ ]]; then
FLAGS+=("--prerelease")
fi
.github/workflows/release.yml:52
rubygems_releaseuses a floating Ruby minor (ruby-version: '3.4'), but the main CI workflow pins Ruby patch versions (e.g..github/workflows/ruby.yml:35-41). Pinning here improves reproducibility and keeps release builds aligned with CI.
ruby-version: '3.4' # Stable environment to package the gem for the supported ruby versions
bundler-cache: false
.github/workflows/release.yml:6
- The PR states it resolves #46, whose requirements include "tags releases in git". This workflow is triggered by an existing tag push and does not create/push the tag itself, so it may not fully satisfy that requirement as written.
on:
push:
tags: ["v*.*.*"]
- Files reviewed: 3/3 changed files
- Comments generated: 1
- Review effort level: Low
Note
Your feedback helps us improve the quality of this feature.
Please use 👍 or 👎 to tell us whether this assessment is correct.
Signed-off-by: Amauri Bizerra <10775696+extern-c@users.noreply.github.com>
Tags like |
just go with whatever version schema is used in ruby world. According to docs
this means, ruby is not using Semantic Versioning for pre-releases, but an own dialect. the pattern Feel free to make this visible in the docs. |
this is an acknowledged state - see for example https://github.com/package-url/vers-spec/blob/main/docs/types/vers-types.md for "gem"
|
Description
Add a release workflow for RubyGems and GitHub Releases triggered by version tags (
v*.*.*).This PR resolves issue: #46.
The workflow consists of three jobs:
The GitHub Release does not include a built gem package and is intended only for release metadata and assets.Future Improvements
To keep this change focused, a few related enhancements are left for follow-up work:
Document the release process (e.g. updating the gem version, creating and publishing a release tag, and publishing a release).UpdatedCONTRIBUTING.mdin commit 5545c7c.Release documentation will be added in a follow-up PR.Testing
The workflow has been validated to the extent possible, but I was unable to perform an end-to-end test for the RubyGems publishing step because trusted publishing requires maintainer-controlled RubyGems and repository configuration.
A maintainer will need to:
releaseenvironment if one does not already exist.AI Tool Disclosure
[e.g. GitHub CoPilot, ChatGPT, JetBrains Junie etc.][e.g. GPT-4.1, Claude Haiku 4.5, Gemini 2.5 Pro etc.][Summarize the key prompts or instructions given to the AI tools]Affirmation