mirror of
https://github.com/nexu-io/open-design.git
synced 2026-07-06 22:31:53 +08:00
* fix(release): restore stable publish dispatch mode * test(e2e): cover stable publish dispatch mode --------- Co-authored-by: Siri-Ray <2667192167@qq.com>
Tools Release
tools-release owns release metadata, storage publishing, release reports, and
notification-facing data contracts. Packaged artifact build, cache, installer,
payload, and smoke work stays in tools-pack; release workflows compose the two
tools through CLI and file contracts.
Channel Architecture Snapshot
This matrix is a quick check before changing or validating the stable lane.
| Channel | Workflow / lane | Role | Build source | Publish gate | GitHub Release surface | R2 / storage surface | Linux policy | Dry-run focus |
|---|---|---|---|---|---|---|---|---|
beta |
release-beta / beta |
Daily R&D and fast validation | Build the current beta lane artifacts directly | No stable promotion gate | Beta artifacts according to beta policy | Beta channel metadata, feeds, platform manifests, payloads, and reports | Default-disabled in the current validation round | Fast build, cache, updater, and metadata validation |
beta-s |
release-beta-s / betas |
Self-hosted or internal-network beta lane | Build through the self-hosted/internal-network lane | Independent beta-s lane; not a stable gate | Do not inherit stable artifact policy | Nexu S3 / betas metadata and platform artifacts |
Unsupported or default-disabled platforms skip by lane policy | Self-hosted constraints and default-parameter validation |
preview |
release-preview / preview |
Independent early-access with stable-like rigor | Build preview artifacts directly | Not a stable gate | None; preview is R2-internal for this migration | R2-only preview metadata, feeds, platform manifests, payloads, and reports | Follows stable platform policy, including optional Linux enablement | Stable-like release flow without GitHub Release publication |
prerelease |
release-prerelease / prerelease |
Stable delivery validation | Build prerelease artifacts directly | The only stable promotion gate | No final stable GitHub Release semantics | Prerelease metadata, feeds, platform manifests, payloads, and reports | Follows stable platform policy, including optional Linux enablement | Complete materials that a future stable release can promote |
stable |
release-stable / stable |
Formal public release | Promote from a validated vX.Y.Z prerelease, with prepublish validation when requested |
Must detect available prerelease artifacts for the exact vX.Y.Z target |
Installers/packages and matching SHA files only | All other platform artifacts, launcher payloads, manifests, metadata, feeds, and reports | Follows stable platform policy, including optional Linux enablement | metadata validates promotion inputs and plan; prepublish covers build, smoke, reports, and final publish plan without side effects |
Stable Quick Check
- Stable must verify an available, usable
vX.Y.Zprerelease artifact set before publication. - Non-stable channels publish counted versions with a
-<channel>.Nsuffix, for example-beta.N,-betas.N,-preview.N, and-prerelease.N; stable promotion checks must match the prerelease suffix while deriving the stablevX.Y.Ztarget. - Stable promotion depends on prerelease only; preview must not become a stable gate.
--dry-run=metadatashould validate prerelease metadata, materials, and the stable publish plan without triggering build or smoke work.--dry-run=prepublishshould run all pre-publication build, smoke, payload or installer validation, report, artifact selection, and publish-plan work, while stopping before final external publishing side effects.- Stable GitHub Release assets should contain only user-facing installers or packages and matching SHA files.
- R2 remains the complete release/update storage surface for payloads, manifests, metadata, feeds, platform reports, and non-GitHub artifacts.
- The stable workflow should stay isomorphic with the other
release-*lanes. Stable-specific policy belongs behind scripts, CLI options, and file contracts, not as leaked tool internals in workflow YAML.