Skip to content

feat(release)!: support partial configuration overrides - #493

Merged
neilime merged 3 commits into
mainfrom
feat/release-config-overrides
Nov 5, 2026
Merged

neilime merged 3 commits into
mainfrom
feat/release-config-overrides

Conversation

@neilime

@neilime neilime commented Nov 5, 2026 •

Copy link
Copy Markdown
Member

Allow consumers to customize release configuration without duplicating HoverKraft defaults. release/plan and release/create accept the same partial YAML or JSON release-config input; repository configuration files can also contain only the settings they override.

Precedence is shared defaults, then the selected repository file, then workflow input. Native Release Drafter inheritance replaces supplied top-level values, including whole lists and mappings; omitted settings remain inherited. Empty lists clear inherited lists. Existing files with an explicit _extends chain retain their chosen base. Repository files are never rewritten.

The configuration action creates temporary inheritance layers and owns its YAML parser dependency. It follows the parse-ci-reports setup and test pattern: shared setup-node at github.action_path, action-local implementation and tests, and shared unit-test CI separate from integration tests. The setup and unit-test workflows use published ci-github-nodejs 2.0.0, which supports disabling lifecycle scripts during installation. Default compare links use the resolved tag, so customized prefixes stay consistent with release notes. Version planning applies the configuration before its existing change-detection wrapper.

Breaking change: files without an explicit _extends chain now inherit shared defaults for omitted keys. Their effective config-path is temporary and is-generated is true. Files that declare their own inheritance keep their existing base and path when no workflow override is supplied.

Validation:

  • 16 configuration tests passed: YAML/JSON, partial files, input/file precedence, explicit inheritance, source preservation, isolated outputs and invalid mappings.
  • All 39 release preparation tests passed with the actual Release Drafter engine, including inherited Conventional Commit versioning, no-change detection, list replacement/clearing and resolved-tag compare links.
  • All 68 tests across configuration, preparation and planning passed through their test:ci scripts with non-empty LCOV reports. Each action also exposes test and test:watch; its tracked coverage placeholder ignores generated reports.
  • Scoped repository Super Linter and Actionlint passed. Nested workflow permissions were validated through both CI entry points; the configuration integration job retains read-only permissions.
  • Action references regenerated through CI Dokumentor; the release guide documents both interfaces.
  • GitHub integration workflows now exercise the input through configuration, planning and explicit draft creation. They have not been run manually for this change.

Supports the shared Node.js workflow extension in hoverkraft-tech/ci-github-nodejs#563 and its consumer reactionable/reactionable#2695. No production release was dispatched or published.

@github-actions

github-actions Bot commented Nov 5, 2026 •

Copy link
Copy Markdown
Contributor

Super-linter summary

Language Validation result
BIOME_FORMAT Pass ✅
BIOME_LINT Pass ✅
CHECKOV Pass ✅
GITHUB_ACTIONS Pass ✅
GITHUB_ACTIONS_ZIZMOR Pass ✅
GITLEAKS Pass ✅
GIT_COMMITLINT Pass ✅
GIT_MERGE_CONFLICT_MARKERS Pass ✅
JSCPD Pass ✅
MARKDOWN Pass ✅
MARKDOWN_PRETTIER Pass ✅
NATURAL_LANGUAGE Pass ✅
PRE_COMMIT Pass ✅
SPELL_CODESPELL Pass ✅
TRIVY Pass ✅
YAML Pass ✅
YAML_PRETTIER Pass ✅

All files and directories linted successfully

For more information, see the GitHub Actions workflow run

Powered by Super-linter
Super-linter revision: 2da136927bd4a73596db63044b504547c62cb854
Super-linter version: 9.0.0

Accept YAML or JSON workflow overrides above repository settings and shared
defaults using native Release Drafter inheritance.

BREAKING CHANGE: Repository release configuration without an explicit _extends
chain now inherits HoverKraft defaults for omitted settings.
@neilime
neilime force-pushed the feat/release-config-overrides branch from f40f949 to 9bc8ab1 Compare November 5, 2026 08:50
@neilime
neilime merged commit 8bd9068 into main Nov 5, 2026
82 checks passed
@neilime
neilime deleted the feat/release-config-overrides branch November 5, 2026 10:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type: breaking Introduces a breaking change type: feature Introduces a new feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant