Skip to content

ci: bootstrap of release strategy change from rolling to versioned#932

Merged
gildesmarais merged 6 commits intomainfrom
ci/release-me-please
May 1, 2026
Merged

ci: bootstrap of release strategy change from rolling to versioned#932
gildesmarais merged 6 commits intomainfrom
ci/release-me-please

Conversation

@gildesmarais
Copy link
Copy Markdown
Member

@gildesmarais gildesmarais commented Mar 29, 2026

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:

  • Added .github/workflows/release.yml to automate releases using release-please, ensuring releases only occur after successful CI on main, and Docker images are published with proper metadata and versioning.
  • Introduced .github/release-please-config.json and .github/.release-please-manifest.json to configure and track release-please-managed versions, and added config/version.rb to define the canonical application version (Html2rss::Web::VERSION). [1] [2] [3]
  • Added CHANGELOG.md to document notable changes in each release.

CI/CD Workflow Updates:

  • Removed the Docker publish job from .github/workflows/ci.yml and replaced it with a more robust, release-gated Docker publishing process in the new release workflow. [1] [2]
  • Added .github/workflows/release_artifacts.yml to verify and refresh generated OpenAPI artifacts on release branches and pull requests, ensuring generated files are always current.

Build and Metadata Improvements:

  • Updated Dockerfile to accept and propagate BUILD_TAG and GIT_SHA as build arguments for improved traceability in image metadata.

Testing and Documentation:

  • Added spec/html2rss/web_spec.rb to test that the canonical version constant is defined and correctly formatted.
  • Updated OpenAPI spec support in spec/support/openapi.rb to use the version constant and improved code formatting. [1] [2] [3]
  • Documented the release automation process in docs/README.md.

@gildesmarais gildesmarais force-pushed the ci/release-me-please branch from d6deffc to 6fa83c7 Compare April 29, 2026 15:35
@gildesmarais gildesmarais force-pushed the ci/release-me-please branch from 141fd7f to 71065bc Compare April 29, 2026 18:45
@gildesmarais gildesmarais marked this pull request as ready for review April 29, 2026 18:46
@gildesmarais gildesmarais requested a review from Copilot April 29, 2026 18:46
@gildesmarais gildesmarais changed the title ci: add please-release ci: bootstrap of release strategy change from rolling to versioned Apr 29, 2026
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.rb as the canonical version source and wire it into OpenAPI generation.
  • Add release-please configuration + manifest and introduce release.yml / release_artifacts.yml workflows.
  • 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.

Comment thread .github/workflows/release.yml Outdated
Comment thread .github/workflows/release_artifacts.yml
Comment thread spec/html2rss/web_spec.rb Outdated
Comment thread .github/workflows/release.yml
@gildesmarais gildesmarais marked this pull request as draft April 29, 2026 18:52
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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::VERSION as 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.

Comment thread .github/workflows/release_artifacts.yml
Comment thread spec/support/openapi.rb Outdated
@gildesmarais gildesmarais marked this pull request as ready for review May 1, 2026 08:42
@gildesmarais gildesmarais requested a review from Copilot May 1, 2026 08:42
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 initialized CHANGELOG.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.

Comment thread Dockerfile Outdated
Comment thread .github/workflows/release.yml Outdated
@gildesmarais gildesmarais merged commit 5c25458 into main May 1, 2026
14 checks passed
@gildesmarais gildesmarais deleted the ci/release-me-please branch May 1, 2026 09:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants