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
- After the checked-in
.asf.yamlreachesmain, verify that ASF reconciliation created thenightlyGitHub Environment with onlymainpermitted 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, andAPPLE_API_ISSUER. Do not expose these secrets to repository-wide or pull-request workflows. - Configure npm Trusted Publishing for
apache/makaand.github/workflows/npm-publication.yml, restricted to thenpm-publicationEnvironment and with bothnpm publishandnpm stage publishallowed. Do not create or store a long-lived npm token. - After npm Trusted Publishing is ready, set
NPM_NIGHTLY_ENABLEDtotrue, runnpm publicationfrommainwithchannel=nightly, and verify the exact npm version andnightlydist-tag. - Set
DESKTOP_NIGHTLY_ENABLEDtotrueand manually dispatch a fresh npm Nightly. Confirm that its successful run triggersDesktop Nightly. Do not rerun a failed attempt in place. - 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. - 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.