Skip to content

feat(release): publish CI artifacts with shared npm and Lerna workflows - #562

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

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

Conversation

@neilime

@neilime neilime commented Oct 29, 2026 •

Copy link
Copy Markdown
Member

Consumers currently need custom scripts to prepare versions, select workspaces and recover partial npm releases. Add shared preparation and publication workflows for single packages and fixed-version Lerna workspaces, with CI owning all project builds and packaging.

The caller connects prepare → CI → publish and keeps manual and scheduled triggers. Preparation commits the automatically planned version and changelog, then dispatches the caller at that tag. CI checks and packages that exact commit. Publication consumes CI's immutable tarball IDs without rebuilding or packing the project. Consumers can reuse their existing CI wrapper rather than repeat build and test settings.

  • Shared release policy: ci-github-publish/release/plan selects the version from Conventional Commits. npm or the installed Lerna applies that exact version, maintaining manifests, lockfiles and workspace dependencies. release/get-configuration and the pinned release/prepare helper render the root changelog before the atomic commit/tag push. The helper is used directly only because the public planner does not expose rendered notes. No Release Please or release-PR lifecycle is introduced.
  • CI artifact handoff: optional packages input enables packaging after all enabled CI checks pass; package-artifacts returns artifact IDs and filenames. Publication verifies the current run, prepared source SHA, tag version and tarball manifest. The caller must retain its successful-CI dependency. Documentation deployment consumes CI's build artifact after publication.
  • Publication and recovery: HoverKraft release/create drafts notes and optional AI summaries before npm publication. Existing npm versions are skipped and original tarballs restored with integrity verification. Existing GitHub asset digests are checked; only missing assets are passed to release/update for upload and final publication. Failed-job reruns reuse successful CI artifacts, including matrix jobs from earlier attempts. Dispatching the original tag again reruns CI without replanning.

Include generated references, setup and recovery guides, decision records and complete Reactionable/reactionable-cli callers. Consumer repository migrations remain outside this PR.

The initial scope is stable public npm packages on GitHub.com, using default Ubuntu CI runners, build artifacts and no CI container. Both versioning modes require branch/tag rules allowing the atomic preparation push. Release history must align with committed versions, and npm trusted publishing must be configured for the caller workflow and environment. Independent workspace versions, prereleases, custom registries and cross-run artifact reuse are outside this workflow's scope. CI callers need actions: read for artifact collection.

Validation completed locally:

  • 33 tests passed: real temporary Git repositories; npm/Lerna application of upstream plans; dependency, lockfile and changelog updates; CLI build/pack/install; tag/push conflicts; artifact identity and partial matrix reruns; tarball validation; partial-publication recovery. Upstream plans and rendered notes are supplied as fixtures.
  • make lint passed with the repository's Docker tooling.
  • Actionlint and ShellCheck passed for changed workflows and both consumer callers. The upstream check excludes Actionlint's unsupported native $/ references and the pre-existing expression-based container ports/volumes syntax; local action/workflow input contracts were validated separately.
  • 42 local interfaces, 11 inline scripts and 51 documentation links checked; generated references refreshed with CI Dokumentor; git diff --check passed.

The existing GitHub CI workflow test now enables packaging, downloads the returned raw artifact ID and compares its packaged build output with the original CI artifact. Its remote result is tracked by the PR checks. No live npm publication, AI generation or GitHub release publication was performed. Most added lines in the overall PR are the isolated Lerna test lockfile.

@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 ✅
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 (1dfc4a7) to head (6339d16).
⚠️ Report is 2 commits behind head on main.

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

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