You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
## Summary
This PR turns the preview release process into a lockstep alpha release
train instead of a manifest-based `zitadel-preview` bundle.
A public alpha now has one version across the CLI, public npm packages,
GoReleaser tag, server binary, and Docker image:
```text
0.1.0-alpha.N
```
The tester experience becomes:
```sh
npx @zitadel/cli@alpha doctor
npx @zitadel/cli@alpha start
npx @zitadel/cli@alpha setup --framework next --server local
```
Exact reports can still pin a train:
```sh
npx @zitadel/cli@0.1.0-alpha.N start
```
## What changed against main
- Configures Changesets to keep all public alpha npm packages in one
fixed group.
- Extends `release-npm.yml` so npm publish remains the first step, then
the same workflow creates `v<version>`, runs GoReleaser, and updates one
draft GitHub prerelease titled `ZITADEL Alpha <version>`.
- Configures GoReleaser so prereleases do not move Docker `latest` or
GitHub latest; only stable releases can do that.
- Makes the CLI derive its default local server image from its own alpha
version, with `--image` and `ZITADEL_LOCAL_IMAGE` still taking
precedence.
- Makes generated Next apps pin `@zitadel/sdk-next` to the exact CLI
alpha version.
- Aligns the current public package baseline to `0.1.0-alpha.1` so PR
tarballs and the consumer journey are internally consistent before the
next Version Packages PR advances the train to `0.1.0-alpha.2`.
- Adds release train scripts, local `check -- --only release` coverage,
an ADR, runbook, and CLI/docs updates.
## Why
The previous manifest-first preview flow made the tester path feel too
complex. This keeps the public UX simple and familiar while preserving
the existing tooling split: Changesets owns npm versioning, GoReleaser
owns Go/image artifacts, and the GitHub Release is the single public
alpha release record.
## Validation
- `corepack pnpm nx test @zitadel/cli --
tests/integration/setup-next.test.ts
tests/unit/lib/orca/patchers/rule/next/index.test.ts`
- `corepack pnpm nx test @zitadel/cli --
tests/unit/scripts/check-alpha-release-plan.test.ts
tests/unit/scripts/release-alpha-train.test.ts`
- `corepack pnpm exec oxlint scripts/check-alpha-release-plan.mjs
apps/cli/tests/unit/scripts/check-alpha-release-plan.test.ts`
- `corepack pnpm run check -- --only pack`
- `corepack pnpm run check -- --only release`
- `corepack pnpm run journey -- --keep`
- `git diff --check`
Copy file name to clipboardExpand all lines: .changeset/README.md
+10-1Lines changed: 10 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -27,6 +27,8 @@ Pick the affected packages, the bump type (patch / minor / major), and write a o
27
27
The repo is currently in changesets **prerelease mode** with the `alpha` tag (see `.changeset/pre.json`). While in this mode:
28
28
29
29
-`changeset version` cuts versions like `0.1.0-alpha.0`, `0.1.0-alpha.1`, …
30
+
- Public packages are in one fixed group, so an alpha train uses the same
31
+
version across `@zitadel/cli`, SDKs, components, and generated API packages.
30
32
-`changeset publish` publishes them under the **`alpha`** npm dist-tag, **not**`latest`. So `npm install @zitadel/cli` keeps resolving the last stable release; consumers opt into prereleases with `@zitadel/cli@alpha`.
31
33
- A package that has never had a stable release is published to `latest` on its first publish (changesets behaviour), then to `alpha` thereafter until it has a stable release.
32
34
@@ -57,7 +59,14 @@ short-lived OIDC credentials, but npm only accepts public provenance
57
59
attestations from public source repositories. Re-enable provenance when
58
60
`zitadel/nextgen` is public.
59
61
60
-
The Go server binary is **not** managed by changesets — it is released with `goreleaser` through the manual [`release.yml`](../.github/workflows/release.yml) workflow while the repo is pre-release. See [docs/adrs/002-multi-package-release-strategy.md](../docs/adrs/002-multi-package-release-strategy.md).
62
+
Changesets does not build the Go server binary. During alpha, `release-npm.yml`
63
+
uses the lockstep npm version as the release train version, creates `v<version>`,
64
+
and then runs GoReleaser so the server image and binaries publish into the same
65
+
GitHub Release. The manual [`release.yml`](../.github/workflows/release.yml)
66
+
workflow remains a server snapshot/fallback path. See
Derive alpha local runtime images from the installed CLI version, pin generated SDK dependencies to the same alpha train, and emit exact-version follow-up commands for reproducible tester reports.
Copy file name to clipboardExpand all lines: .github/workflows/ci.yml
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -541,14 +541,14 @@ jobs:
541
541
542
542
- name: Dry-run npm packs
543
543
run: |
544
-
for dir in apps/cli packages/api packages/components packages/sdk-core packages/sdk-next packages/sdk-nuxt; do
544
+
for dir in apps/cli packages/api packages/components packages/sdk-core packages/sdk-next packages/sdk-nuxt packages/sdk-react packages/sdk-vue packages/sdk-angular; do
545
545
corepack pnpm --dir "$dir" pack --dry-run
546
546
done
547
547
548
548
- name: Create npm package artifacts
549
549
run: |
550
550
mkdir -p "$RUNNER_TEMP/zitadel-npm-packages"
551
-
for dir in apps/cli packages/api packages/components packages/sdk-core packages/sdk-next packages/sdk-nuxt; do
551
+
for dir in apps/cli packages/api packages/components packages/sdk-core packages/sdk-next packages/sdk-nuxt packages/sdk-react packages/sdk-vue packages/sdk-angular; do
0 commit comments