Files
maka/.github/DESKTOP_NIGHTLY.md
agent-radar 7be535059e
Dependency audit / audit (push) Canceled after 0s
CI / plan (push) Canceled after 0s
Gitoxide helper admission / macos-latest (push) Canceled after 0s
Gitoxide helper admission / ubuntu-latest (push) Canceled after 0s
Gitoxide helper admission / windows-latest (push) Canceled after 0s
Runtime Host peer admission / quality (push) Canceled after 0s
Windows recovery / windows_recovery (push) Canceled after 0s
CI / heavy (push) Canceled after 0s
CI / test (push) Canceled after 0s
源码快照 @ 2026-09-01 (source-only, 剔除非源码素材)
2026-09-01 19:05:14 +08:00

5.1 KiB

Desktop Nightly

Desktop Nightly is an ephemeral developer snapshot, not an Apache release. It builds the current main commit every day so contributors can try recent Desktop changes and report problems without waiting for an ASF source-release vote.

The npm publication workflow gives each snapshot an immutable version such as 0.2.0-dev.42.20260829. The run number is the sole ordering authority. After that exact npm version is public, it triggers Desktop Nightly with a version-only artifact; the authenticated workflow event supplies the exact source commit and upstream run. Each fresh Desktop Nightly creates a v<version> tag protected by the checked-in Immutable release tags ruleset and one GitHub draft prerelease containing the macOS and Windows packages, blockmaps, dev-mac.yml, dev.yml, and one offline Sigstore bundle. The workflow verifies every remote asset before it publishes the prerelease as non-Latest. Packaged Nightlies use the GitHub dev channel and verify that downloaded bytes were attested by .github/workflows/desktop-nightly.yml on main. A formal Desktop build uses the separate stable GitHub Release channel and formal product-release attestation identity.

Nightly currently uses the same application identity as the formal Desktop. Installing it replaces the existing Maka installation rather than creating a second side-by-side app. Its user data remains in the same location. Testers who need the formal build should reinstall that build before returning to the formal channel. Builds previously downloaded from nightlies.apache.org do not migrate automatically; testers must install the newest GitHub prerelease once, after which GitHub Nightlies update automatically.

One-time setup

  1. After the checked-in .asf.yaml reaches main, verify that ASF reconciliation created the nightly GitHub Environment with only main permitted and no approval gate. Do not maintain that policy manually in GitHub. Configure its macOS signing and notarization secrets: CSC_LINK, CSC_KEY_PASSWORD, APPLE_API_KEY, APPLE_API_KEY_ID, and APPLE_API_ISSUER. Do not expose these secrets to repository-wide or pull-request workflows.
  2. Configure npm Trusted Publishing for apache/maka and .github/workflows/npm-publication.yml, restricted to the npm-publication Environment and with both npm publish and npm stage publish allowed. Do not create or store a long-lived npm token.
  3. After npm Trusted Publishing is ready, set NPM_NIGHTLY_ENABLED to true, run npm publication from main with channel=nightly, and verify the exact npm version and nightly dist-tag.
  4. Set DESKTOP_NIGHTLY_ENABLED to true and manually dispatch a fresh npm Nightly. Confirm that its successful run triggers Desktop Nightly. Do not rerun a failed attempt in place.
  5. Verify that v<version> points to the exact source SHA and that its GitHub Release is published with Draft off, Prerelease on, Latest off, and exactly the nine expected assets. Install that prerelease on both platforms.
  6. Publish one later fresh Nightly and confirm a GitHub-to-GitHub automatic and differential update on both platforms before sharing the channel with testers.

The npm schedule starts at 18:17 UTC. Before changing the npm tag, the workflow requires its run number to exceed the current nightly version. Desktop assembles and verifies a draft before one publish mutation; a packaging, attestation, tag, upload, or digest failure leaves no partially published GitHub Release. Never rerun a failed workflow attempt in place; dispatch a fresh npm Nightly with a newer version.

GitHub Release retention is intentionally outside this workflow. Do not delete an old Nightly prerelease or its tag while any installed client may need its payload or blockmap. One Nightly is additionally pinned by tag, asset name, and SHA-256 in scripts/windows-upgrade-baseline.json as the Windows upgrade gate's baseline: deleting that prerelease fails the gate on every pull request that touches the Windows release path until the pin moves to another published build. Disabling DESKTOP_NIGHTLY_ENABLED stops new Desktop publication without mutating tags or releases.

Remote Runtime Host setup uses the exact maka-agent@<nightly-version> package embedded in the Desktop manifest. The npm package is verified before Desktop artifacts become visible, so clean remote setup never depends on an unpublished Runtime Host version.