Skip to content

feat(release): automate single-package npm releases with HoverKraft - #562

Open
neilime wants to merge 15 commits into
mainfrom
feat/release-orchestration
Open

neilime wants to merge 15 commits into
mainfrom
feat/release-orchestration

Conversation

@neilime

@neilime neilime commented Oct 29, 2026 •

Copy link
Copy Markdown
Member

Add the common release path for one public npm package through reusable prepare → CI → release workflows. Callers own manual and scheduled triggers; HoverKraft owns Conventional Commit version planning, GitHub release notes, optional AI summaries and publication. No consumer release scripts or Release Please are required.

  • Preparation is expressed as explicit action steps for inspection, planning, versioning, atomic push and dispatch. Small scripts run directly with actions/github-script; the only shared JavaScript helper handles artifact identity and retry integrity.
  • prepare-package-release.yml applies the exact HoverKraft plan with npm, updates the manifest and lockfile, atomically pushes the version commit and tag, then dispatches the caller at that tag. Reject unsupported layouts before preparing a version.
  • Release notes stay on GitHub. Preparation neither creates nor modifies CHANGELOG.md and uses no internal changelog-rendering helper. Existing changelog files are preserved.
  • CI builds and tests the prepared source. One sequential release job verifies that CI artifact, drafts notes directly with ci-github-publish/release/create, packages without installing or rebuilding, checks the tarball and publishes it. Finalization uses release/update for assets and publication.
  • Retain artifact run/SHA checks, package smoke tests, publication dry runs, original registry tarballs and digest checks on retries. Successful npm versions and conflicting GitHub assets are never overwritten.
  • Include generated references, a single-package caller example, readiness/recovery guidance and one consolidated release ADR. Root .node-version, fixture symlinks and scheduled/manual Renovate updates remain shared maintenance.

Workspace selection, pnpm workspace packing, fixed/independent Lerna, per-package notes and matrix recovery are moved to #563, based on this branch. Merge #562 first, then retarget #563 to main. The common release suite has no external dependencies. The dedicated __test-release.yml workflow runs it through shared CI.

Validation:

  • 28 release tests passed, including real local Git/npm versioning, atomic-push conflicts, CLI packaging/installation, changelog-file preservation, layout rejection, artifact identity, registry recovery and tarball integrity.
  • make lint, Actionlint (excluding unsupported native $/ references), 31 local interfaces, 18 inline scripts, 61 documentation links and git diff --check passed.
  • Affected references regenerated using CI Dokumentor. GitHub integration results are tracked in the PR checks.

Scope: stable public npm packages, npmjs.org, GitHub-hosted Ubuntu without a CI container, and CI artifacts from the same run and prepared commit. Consumers must configure a release identity, environment rules, npm trusted publishing and consistent release history. No live npm/GitHub release publication or AI generation was performed.

@github-actions github-actions Bot added the type: feature Introduces a new feature label Oct 29, 2026
@github-actions

github-actions Bot commented Oct 29, 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 ✅
RENOVATE 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

@github-actions

Copy link
Copy Markdown
Contributor

Code Coverage Report

Coverage Results

Coverage

Metric Covered Total Percentage
Lines 2 2 100.00%
Functions 1 1 100.00%

Overall: 100.00% 🟢
🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩

@codecov

codecov Bot commented Oct 29, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (b7eadcf) to head (65ffd4f).

Additional details and impacted files
@@            Coverage Diff            @@
##              main      #562   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files            1         1           
  Lines            3         3           
=========================================
  Hits             3         3           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@neilime neilime changed the title feat(release): add shared single-package and Lerna release workflow feat(release): publish CI artifacts with shared npm and Lerna workflows Oct 31, 2026
@neilime neilime changed the title feat(release): publish CI artifacts with shared npm and Lerna workflows feat(release): package CI builds with shared npm and Lerna workflows Nov 2, 2026
@neilime neilime changed the title feat(release): package CI builds with shared npm and Lerna workflows feat(release): orchestrate npm and Lerna releases from CI builds Nov 2, 2026
@neilime neilime changed the title feat(release): orchestrate npm and Lerna releases from CI builds feat(release): automate single-package npm releases with HoverKraft Nov 3, 2026
@neilime
neilime force-pushed the feat/release-orchestration branch from 65ffd4f to 05023e6 Compare November 3, 2026 12:40

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type: feature Introduces a new feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant