ci: bootstrap of release strategy change from rolling to versioned#932
ci: bootstrap of release strategy change from rolling to versioned#932gildesmarais wants to merge 4 commits intomainfrom
Conversation
d6deffc to
6fa83c7
Compare
141fd7f to
71065bc
Compare
There was a problem hiding this comment.
Pull request overview
This PR introduces release automation via release-please, centralizes the application version into config/version.rb, and adjusts CI/release workflows to publish Docker images and keep generated OpenAPI artifacts up to date.
Changes:
- Add
config/version.rbas the canonical version source and wire it into OpenAPI generation. - Add release-please configuration + manifest and introduce
release.yml/release_artifacts.ymlworkflows. - Move Docker publish responsibilities out of the main CI workflow into the release workflow; add build metadata env vars to the Docker image.
Reviewed changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
spec/support/openapi.rb |
Uses the centralized app version constant for OpenAPI metadata. |
spec/html2rss/web_spec.rb |
Adds a spec asserting the app VERSION constant. |
config/version.rb |
Introduces a canonical Html2rss::Web::VERSION constant for release tooling and runtime use. |
Dockerfile |
Adds BUILD_TAG/GIT_SHA build args and exports them as runtime env vars. |
CHANGELOG.md |
Adds an initial changelog file for release-please to maintain. |
.github/workflows/release_artifacts.yml |
Adds an automation workflow to refresh/commit generated OpenAPI artifacts on release-please PRs. |
.github/workflows/release.yml |
Adds a release-please driven release workflow and Docker publish job. |
.github/workflows/ci.yml |
Removes the main-branch Docker publish job from CI (publish now handled in release workflow). |
.github/release-please-config.json |
Configures release-please to manage Ruby releases using config/version.rb and CHANGELOG.md. |
.github/.release-please-manifest.json |
Seeds release-please manifest with the current version. |
There was a problem hiding this comment.
Pull request overview
This PR introduces a versioned release process (moving away from rolling releases) by adding release-please configuration, a canonical Ruby version constant, and GitHub Actions workflows to create releases, publish Docker images on release, and keep generated OpenAPI artifacts in sync with release PRs.
Changes:
- Add release automation via release-please and a release workflow that publishes Docker images only when a release is created.
- Introduce
Html2rss::Web::VERSIONas the canonical version source and update OpenAPI/test usage accordingly. - Add a workflow to verify/refresh generated OpenAPI artifacts on release-please branches, plus an initial
CHANGELOG.md.
Reviewed changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| spec/support/openapi.rb | Switch OpenAPI application version from a hardcoded value to the canonical version constant. |
| spec/html2rss/web_spec.rb | Add a spec validating presence/format of the canonical version constant. |
| config/version.rb | Define Html2rss::Web::VERSION for release/version tracking. |
| Dockerfile | Add build metadata (BUILD_TAG, GIT_SHA) as build args and runtime env vars. |
| CHANGELOG.md | Introduce a changelog file for release-please managed releases. |
| .github/workflows/release_artifacts.yml | Add automation to verify/refresh generated OpenAPI artifacts on release-please PRs/branch. |
| .github/workflows/release.yml | Add release-please driven release workflow plus Docker publishing on release creation. |
| .github/workflows/ci.yml | Remove Docker publishing from CI so publishing happens only on releases. |
| .github/release-please-config.json | Configure release-please for Ruby releases, version file, and changelog path. |
| .github/.release-please-manifest.json | Initialize release-please manifest with the starting version. |
This pull request introduces automated release management and versioning for the project, including integration with release-please, Docker image publishing tied to releases, and version tracking. It also adds supporting configuration, version files, and tests. The most important changes are grouped below:
Release Automation & Versioning
.github/workflows/release.ymlto automate releases using release-please, generate changelogs, and publish Docker images only when a new release is created. This includes improved tagging and metadata for Docker images..github/release-please-config.jsonand.github/.release-please-manifest.jsonto configure release-please for Ruby, specifying the version file and changelog path. [1] [2]config/version.rbto define the canonical application version (1.0.0) in Ruby, and updated tests to check this version. [1] [2]CHANGELOG.mdfile to track notable changes in releases.Docker & CI Improvements
.github/workflows/ci.ymland moved Docker image building/publishing to the new release workflow, ensuring images are only published for tagged releases. Also, Docker images now include build tag and git SHA as build arguments and environment variables. [1] [2]Release Artifact Refresh
.github/workflows/release_artifacts.ymlto automatically refresh and commit generated OpenAPI artifacts on release-please PRs, ensuring artifacts remain up-to-date.