--next now prefers a fast npm @next install (CLI + gateway from the Gitea registry) and falls back to source build at next if the dist-tag is unavailable. Registry lane gated to non-dev, non-explicit-ref next installs; CLI/gateway prerelease versions must share a pipeline suffix. Adds tools/install-next-lane.test.sh (wired into CI). PR-event CI 1635 fully green + review-of-record APPROVE (functional install test, head 2fd7cfc3).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2.4 KiB
npm @next prerelease lane
Status: IMPLEMENTED
Current behavior
tools/install.sh --next provides the prerelease integration lane for the permanent next branch.
The lane is fast-by-default:
-
Install framework files from the
nextsource archive. -
Resolve the Gitea npm registry
nextdist-tag for the globally installed packages:npm view @mosaicstack/gateway@next version npm view @mosaicstack/mosaic@next version -
Require both resolved versions to share the same
next.<pipeline>suffix, then install the exact resolved versions. -
If either
@nextpackage is missing, unreachable, mismatched, or fails to install, fall back to the source-build path atnext.
--next never hard-fails solely because the prerelease npm dist-tag is unavailable.
Published packages
The next publish pipeline publishes non-private @mosaicstack/* packages to the Mosaic Gitea npm registry:
https://git.mosaicstack.dev/api/packages/mosaicstack/npm/
Observed next dist-tags after enabling the pipeline:
@mosaicstack/mosaic@next -> 0.0.49-next.1633
@mosaicstack/gateway@next -> 0.0.7-next.1633
The gateway also publishes a Docker image as gateway:sha-<short> on next merges. The installer fast path uses the npm gateway package when available; the Docker image is for deployed gateway/runtime harness flows.
Explicit source lanes
Source builds remain available and are still the authority for explicit ref validation:
--devalways builds from source.--ref <ref>/MOSAIC_REF=<ref>wins over--nextand uses the source path for that exact ref.
Pipeline shape
- Trigger on
nextmerges. - Compute the next prerelease version from the upcoming stable version plus the Woodpecker pipeline number (
<target-stable>-next.<CI_PIPELINE_NUMBER>). - Build and publish non-private packages in CI.
- Publish to the Mosaic Gitea npm registry with dist-tag
next. - Keep
latestuntouched; only main/release promotion can updatelatest. - Publish gateway Docker images from
nextasgateway:sha-<short>only.
Guardrails
@nextis mutable prerelease convenience, not a deployment pin.- Stable installs continue to use
@latest. - Contributor validation remains available through
--dev --ref <branch>. - Pipeline output traces every prerelease package back to the source commit on
next. - The installer falls back to source rather than hard-failing on prerelease registry issues.