Files
komorebi/.github/workflows/_macos.yaml
T
LGUG2Z f0731112a5 fix(ci): run the recorder's macOS tests in the native dev shell
The step ran `cargo nextest` in `nix develop`, whose default shell exports
CARGO_BUILD_TARGET=x86_64-pc-windows-msvc for the Windows cross build. On the
macOS runner that made cargo build the recorder's test executables for Windows,
and nextest then failed to list them:

  for `komorebi-recorder::assert`, command `.../target/x86_64-pc-windows-msvc/debug/deps/assert-ce31ab528bf795df.exe --list --format terse`
  exited with exit code 126 ... cannot execute binary file

Use `nix develop .#native`, the shell without the cross environment that exists
for exactly these `cargo -p komorebi-<platform>` commands. The schemas step
keeps the default shell: `just jsonschema` runs cargo through `env -u
CARGO_BUILD_TARGET`. docs/dev/ci.md notes the shell.
2026-11-06 11:34:42 -08:00

62 lines
2.3 KiB
YAML

# The macOS jobs, called by ci.yaml on a hosted runner.
name: macos
on:
workflow_call:
inputs:
runs-on:
description: The runner, as JSON, for example '"macos-latest"'
type: string
required: true
permissions:
contents: read
jobs:
macos:
runs-on: ${{ fromJSON(inputs.runs-on) }}
timeout-minutes: 120
env:
# a symlinked TMPDIR (/var/folders -> /private/var/folders) breaks a test of the recorder: the
# cargo steps run in a canonical one
TMPDIR: /private/tmp/komorebi-ci-${{ github.run_id }}-${{ github.run_attempt }}
steps:
- run: mkdir -p "$TMPDIR"
- uses: actions/checkout@v6
- uses: ./.github/actions/nix
with:
cachix-cache: ${{ vars.CACHIX_CACHE }}
cachix-auth-token: ${{ secrets.CACHIX_AUTH_TOKEN }}
- name: The macOS checks
run: nix build -L --no-link .#checkSets.macos-lint .#checkSets.macos-test .#checkSets.macos-options
# the recorder's tests of the macOS sources (oslog, av, capture, platform, power, system state): the
# filterset is tools/test-partition's. It runs in the native shell: the default one exports
# CARGO_BUILD_TARGET=x86_64-pc-windows-msvc, and nextest cannot list the tests of a Windows .exe on a Mac
- name: The recorder's macOS tests
run: |
# shellcheck disable=SC2016
nix develop .#native --command bash -c 'cargo nextest run --locked -p komorebi-recorder -E "$(tools/test-partition expr recorder-macos)"'
- name: The binaries
run: |
nix build -L --no-link --print-out-paths .#komorebi .#komorebic .#komorebi-bar |
while read -r out; do
for bin in "$out"/bin/*; do "$bin" --version; done
done
- name: The schemas are current
run: |
nix develop --command just jsonschema
git diff --exit-code schemas/macos
- name: Logs of a failed run
if: failure()
run: |
mkdir -p "$RUNNER_TEMP/logs"
cp -R "$TMPDIR"/. "$RUNNER_TEMP/logs/" 2>/dev/null || true
- if: failure()
uses: actions/upload-artifact@v7
with:
name: ci-macos-logs-${{ github.run_id }}-${{ github.run_attempt }}
path: ${{ runner.temp }}/logs
if-no-files-found: ignore
retention-days: 7