Release: FreeBSD artifact job, docs/releasing.md
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
7b4a526fdf
commit
702aeb4ff4
|
|
@ -275,9 +275,48 @@ jobs:
|
|||
path: dist/release/*
|
||||
if-no-files-found: error
|
||||
|
||||
freebsd:
|
||||
name: FreeBSD x86_64
|
||||
needs: version
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 300
|
||||
env:
|
||||
WORDCRAFT_VERSION: ${{ needs.version.outputs.version }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Build in a FreeBSD VM
|
||||
uses: vmactions/freebsd-vm@c46abacb49f09938ca4e1702d15d836285d694cc # v1
|
||||
with:
|
||||
release: "14.3"
|
||||
usesh: true
|
||||
cpu: 4
|
||||
mem: 12288
|
||||
envs: WORDCRAFT_VERSION
|
||||
copyback: true
|
||||
prepare: |
|
||||
pkg install -y git curl pkgconf cmake python3 libxkbcommon wayland libX11 libXcursor libXrandr libXi libxcb mesa-libs vulkan-loader gtk3 fontconfig freetype2 alsa-lib
|
||||
curl -fsSL https://sh.rustup.rs | sh -s -- -y --profile minimal
|
||||
run: |
|
||||
. "$HOME/.cargo/env"
|
||||
git config --global --add safe.directory "*"
|
||||
cargo run -q -p xtask -- version set "$WORDCRAFT_VERSION"
|
||||
cargo build --release --locked -p wordcraft -p wordcraft-cli
|
||||
name="wordcraft-$WORDCRAFT_VERSION-freebsd-x86_64"
|
||||
mkdir -p "dist/release/$name"
|
||||
cp target/release/wordcraft target/release/wordcraft-cli LICENSE-MIT LICENSE-APACHE NOTICE ATTRIBUTION.md README.md "dist/release/$name/"
|
||||
cp packaging/linux/ai.storyteller.wordcraft.desktop "dist/release/$name/"
|
||||
cp assets/app-icon/hicolor/256x256/apps/ai.storyteller.wordcraft.png "dist/release/$name/"
|
||||
tar -C dist/release -czf "dist/release/$name.tar.gz" "$name"
|
||||
rm -rf "dist/release/$name" target
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: release-freebsd
|
||||
path: dist/release/*.tar.gz
|
||||
if-no-files-found: error
|
||||
|
||||
release:
|
||||
name: Draft GitHub Release
|
||||
needs: [version, macos, windows, linux, web]
|
||||
needs: [version, macos, windows, linux, web, freebsd]
|
||||
runs-on: ubuntu-latest
|
||||
environment: release
|
||||
permissions:
|
||||
|
|
|
|||
|
|
@ -0,0 +1,26 @@
|
|||
# Releasing WordCraft
|
||||
|
||||
The canonical recipe is [craftrules `release/playbook.md`](https://github.com/storytold/craftrules/blob/main/release/playbook.md);
|
||||
this file has the WordCraft specifics.
|
||||
|
||||
1. Bump the version on `main`: `cargo xtask version set 0.2.0` (the one source of truth is
|
||||
`[workspace.package] version`; the app shows it in `--version` and About, with the commit from
|
||||
`WORDCRAFT_BUILD_SHA`).
|
||||
2. Merge `main` into `release` and push. `.github/workflows/release.yml` builds:
|
||||
|
||||
| Platform | Artifacts | Signing |
|
||||
|---|---|---|
|
||||
| macOS | universal `WordCraft.app` in a `.dmg`, universal CLI zip | Developer ID + notarization (`APPLE_*` secrets) |
|
||||
| Windows | x64, x86 and arm64 `.msi` + portable `.zip` | Azure Trusted Signing (`AZURE_*` secrets) |
|
||||
| Linux | x86_64 and aarch64 `.AppImage`, `.deb`, `.rpm`, `.tar.gz`; Flatpak manifest | checksums |
|
||||
| FreeBSD | x86_64 `.tar.gz` | checksums |
|
||||
| Web | `wordcraft-web-<version>.zip` (static site: `index.html`, wasm, glue) | none |
|
||||
|
||||
3. The run drafts a GitHub Release `WordCraft v<version>` with `SHA256SUMS.txt`; review and publish it.
|
||||
|
||||
Signing secrets live in the repository's `release` environment (deployment branch: `release` only),
|
||||
synced from the release manager's machine (`craftrules/release/signing-setup.md`). Missing secrets
|
||||
produce unsigned builds with a warning, so forks still build.
|
||||
|
||||
Local packaging: `packaging/macos/package.sh --arch universal`, `packaging/windows/package.ps1`,
|
||||
`packaging/linux/package.sh`, `packaging/web/package.sh`.
|
||||
Loading…
Reference in New Issue