3.2 KiB
Releasing LightCraft
The release pipeline is .github/workflows/release.yml.
It runs on every push to the release branch. A maintainer can also dispatch it manually, with
an optional version override such as 1.2.0-rc.1; the release environment's branch restrictions
still apply.
Prepare and start a release
- Merge the release-ready changes into
release. - Set the workspace version in
Cargo.toml(for example, withcargo xtask version set 1.2.0). For a manual workflow run, the version input can override the workspace version for that run. Use a semantic version such as1.2.0or1.2.0-rc.1; versions containing a hyphen are marked as prereleases. - Push to
release, or dispatch the workflow from a branch allowed by thereleaseenvironment. - Check the workflow run and its artifacts. On success, the workflow creates or updates a draft
GitHub Release named
LightCraft v<version>, targeted at the commit that triggered the run. Review the draft and itsSHA256SUMS.txt, then publish it in GitHub Releases when ready.
The workflow replaces assets when it updates an existing draft. It stops rather than overwriting a release that has already been published, so bump the version before producing another release.
Builds and artifacts
Release jobs build macOS universal, Windows x86/x64/ARM64, Linux x86_64/aarch64, and the WASM web
app. The platform scripts in packaging/ write their outputs to dist/release/:
- macOS: app DMG and CLI ZIP.
- Windows: MSI installer and portable ZIP for each architecture.
- Linux: AppImage,
.deb,.rpm, and.tar.gzfor each architecture. - Web:
lightcraft-web-<version>.zip.
The Linux builds run on Ubuntu 22.04 and target glibc 2.35 or newer. AppImages and binaries may
also require system libraries for the windowing stack; the .deb and .rpm packages declare
their runtime dependencies.
Release builds fetch the pinned storytold/craft-fonts
revision and require it (CRAFT_FONTS_REQUIRED=1). Keep that pin deliberate when updating the
workflow.
Signing credentials
All credentials are stored as secrets in the GitHub release environment. Signing is optional:
without platform signing credentials, packaging continues with unsigned artifacts and warnings.
macOS notarization is a separate optional step; when its credentials are absent, a build with a
signing identity is signed but not notarized. Configure only the platform credentials you need:
- macOS signing:
APPLE_CERTIFICATE,APPLE_CERTIFICATE_PASSWORD, andKEYCHAIN_PASSWORD. Notarization additionally needs all ofAPPLE_ID,APPLE_PASSWORD(an app-specific password), andAPPLE_TEAM_ID. - Windows signing: either
WINDOWS_CERTIFICATEandWINDOWS_CERTIFICATE_PASSWORD, or Azure Trusted Signing credentials:AZURE_TENANT_ID,AZURE_CLIENT_ID,AZURE_CLIENT_SECRET,AZURE_SIGNING_ENDPOINT,AZURE_SIGNING_ACCOUNT, andAZURE_CERT_PROFILE.
Linux and web artifacts are not code-signed by this workflow. The release job computes SHA-256 checksums for the complete artifact set and attaches the checksum file to the draft release.