mirror of
https://github.com/LGUG2Z/komorebi.git
synced 2026-11-14 04:43:42 +01:00
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.
62 lines
2.3 KiB
YAML
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
|