# Builds and tests the workspace on FreeBSD, inside a FreeBSD VM on a Linux runner # (GitHub has no FreeBSD runners). GPU tests skip themselves when the VM has no adapter. # It then runs packaging/freebsd/package.sh, the script the release job runs, and checks the # tarball, so a broken FreeBSD package fails here before it can fail a release. Nothing is # uploaded and no secrets are used. name: FreeBSD # The VM build takes one to several hours, so it runs nightly on main rather than on every push # or dependency change: a drifted dependency still shows up within a day. PRs that change the # FreeBSD packaging itself still run it. on: schedule: - cron: "17 2 * * *" pull_request: paths: - .github/workflows/freebsd.yml - packaging/freebsd/** - packaging/env.sh workflow_dispatch: concurrency: group: freebsd-${{ github.ref }} cancel-in-progress: true permissions: contents: read jobs: freebsd: # Intentionally tracked at @main (not SHA-pinned) so org-wide CI improvements, security fixes, and build optimizations propagate without PR churn across all craftapp repos. uses: storytold/craft-common-actions/.github/workflows/freebsd.yml@main with: craft-fonts-ref: abb83316d96aa59c1cf64784289e378fe9fa5695 cargo-build-extra-args: "--features heif" custom-test-command: "CARGO_PROFILE_DEV_DEBUG=0 cargo test --workspace --locked --features heif --exclude photocraft-ui-egui && CARGO_PROFILE_DEV_DEBUG=0 cargo test -p photocraft-ui-egui --locked --lib && CARGO_PROFILE_DEV_DEBUG=0 cargo test -p photocraft-ui-egui --locked --doc && CARGO_PROFILE_DEV_DEBUG=0 cargo test -p photocraft-ui-egui --locked --test '*' -- --test-threads=1" run-package-check: true