name: Build and test on: push: paths: ['src/**', 'tests/**', 'clients/**', 'native/**', 'proto/**', 'assets/**', 'scripts/**', '*.slnx', '*.props', '*.targets', 'global.json', 'Dockerfile', '.github/workflows/dotnet.yml'] pull_request: paths: ['src/**', 'tests/**', 'clients/**', 'native/**', 'proto/**', 'assets/**', 'scripts/**', '*.slnx', '*.props', '*.targets', 'global.json', 'Dockerfile', '.github/workflows/dotnet.yml'] workflow_dispatch: jobs: test: strategy: fail-fast: false matrix: os: [windows-latest, ubuntu-24.04, macos-latest] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 - uses: actions/setup-dotnet@v4 with: global-json-file: global.json cache: true cache-dependency-path: '**/packages.lock.json' - name: Build and stage native codec/DSP shell: pwsh run: ./scripts/build-native.ps1 - run: dotnet restore VoiceCat.slnx --locked-mode - run: dotnet build VoiceCat.slnx -c Release --no-restore - run: dotnet test VoiceCat.slnx -c Release --no-build - shell: pwsh run: ./scripts/check-licenses.ps1 apple-client: runs-on: macos-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-dotnet@v4 with: global-json-file: global.json cache: true cache-dependency-path: '**/packages.lock.json' - name: Install Apple workloads run: dotnet workload install macos ios --version 10.0.401 - name: Build and stage native codec/DSP shell: pwsh run: ./scripts/build-native.ps1 - name: Build and stage static iOS codec/DSP run: ./scripts/build-native-ios.sh - name: Restore managed Apple clients run: dotnet restore clients/apple/VoiceCat.Apple.slnx - name: Build managed AppKit and UIKit clients run: dotnet build clients/apple/VoiceCat.Apple.slnx -c Debug --no-restore