ci: bootstrap of release strategy change from rolling to versioned#932
ci: bootstrap of release strategy change from rolling to versioned#932gildesmarais merged 6 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. |
There was a problem hiding this comment.
Pull request overview
This PR introduces a versioned release strategy for html2rss-web by adding release-please based automation, tying Docker image publishing to created releases, and centralizing the canonical app version in a Ruby constant.
Changes:
- Added GitHub Actions workflows for release automation (
release-please) and for keeping generated OpenAPI artifacts in sync on release-please branches/PRs. - Introduced a canonical Ruby version constant (
config/version.rb) and updated OpenAPI generation/tests to consume it. - Moved Docker publishing out of CI and into the release workflow; added build metadata wiring (
BUILD_TAG,GIT_SHA) and initializedCHANGELOG.md.
Reviewed changes
Copilot reviewed 11 out of 11 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
spec/support/openapi.rb |
Uses canonical app version constant for OpenAPI generation and avoids top-level return in a required file. |
spec/html2rss/web_spec.rb |
Adds a spec to assert the canonical version constant is present and semver-shaped. |
docs/README.md |
Documents the new release automation and CI gating expectations. |
config/version.rb |
Defines canonical application version for release-please and spec/OpenAPI consumers. |
Dockerfile |
Adds build args/env vars for release metadata (BUILD_TAG, GIT_SHA). |
CHANGELOG.md |
Adds changelog file for release-please to update. |
.github/workflows/release_artifacts.yml |
Verifies and optionally refreshes generated OpenAPI artifacts for release-please branches. |
.github/workflows/release.yml |
Adds release-please release workflow and Docker image publishing on release creation. |
.github/workflows/ci.yml |
Removes Docker publish job so CI no longer pushes images on every main push. |
.github/release-please-config.json |
Configures release-please for Ruby releases using config/version.rb and CHANGELOG.md. |
.github/.release-please-manifest.json |
Initializes release-please manifest version tracking. |
This pull request introduces automated release management and versioning for the project, including configuration for release-please, Docker image publishing, and artifact verification. It establishes a formal release process tied to CI validation, adds a canonical version constant, and ensures generated artifacts are kept up-to-date. The most important changes are grouped below:
Release Automation and Versioning:
.github/workflows/release.ymlto automate releases using release-please, ensuring releases only occur after successful CI onmain, and Docker images are published with proper metadata and versioning..github/release-please-config.jsonand.github/.release-please-manifest.jsonto configure and track release-please-managed versions, and addedconfig/version.rbto define the canonical application version (Html2rss::Web::VERSION). [1] [2] [3]CHANGELOG.mdto document notable changes in each release.CI/CD Workflow Updates:
.github/workflows/ci.ymland replaced it with a more robust, release-gated Docker publishing process in the new release workflow. [1] [2].github/workflows/release_artifacts.ymlto verify and refresh generated OpenAPI artifacts on release branches and pull requests, ensuring generated files are always current.Build and Metadata Improvements:
Dockerfileto accept and propagateBUILD_TAGandGIT_SHAas build arguments for improved traceability in image metadata.Testing and Documentation:
spec/html2rss/web_spec.rbto test that the canonical version constant is defined and correctly formatted.spec/support/openapi.rbto use the version constant and improved code formatting. [1] [2] [3]docs/README.md.