name: Test on: push: pull_request: schedule: # Weekly, at 5:45 AM on Friday (somewhat randomly chosen). - cron: '45 5 * * 5' workflow_dispatch: jobs: test: strategy: matrix: platform: [x86, x64] os: [ubuntu-20.04, ubuntu-22.04, ubuntu-24.04, windows-2019, windows-2022] exclude: # 32-bit builds on ubuntu-24.04 fail due to a bug in Ubuntu linux-azure # kernel that Github runner images use. # See: https://bugs.launchpad.net/ubuntu/+source/linux-signed-azure/+bug/2071445 # TODO: Remove this exclusion when the bugfix is available on the runners. - {platform: x86, os: ubuntu-24.04} runs-on: '${{ matrix.os }}' name: 'Test: ${{ matrix.os }} / ${{ matrix.platform }}' steps: - name: Checkout uses: actions/checkout@v3 - name: Clean up PATH uses: egor-tensin/cleanup-path@v3 if: runner.os == 'Windows' - name: Set up Clang uses: ./ with: platform: '${{ matrix.platform }}' cc: 1 - name: Build foo.exe uses: ./.github/actions/build-foo - name: Run foo.exe uses: ./.github/actions/run-foo - name: Check symlinks uses: ./.github/actions/check-cc versions: strategy: matrix: os: [ubuntu-20.04, ubuntu-22.04, ubuntu-24.04] version: ['6.0', 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18] exclude: - {os: ubuntu-22.04, version: '6.0'} - {os: ubuntu-22.04, version: 6} - {os: ubuntu-22.04, version: 7} - {os: ubuntu-22.04, version: 8} - {os: ubuntu-22.04, version: 9} - {os: ubuntu-22.04, version: 10} - {os: ubuntu-24.04, version: '6.0'} - {os: ubuntu-24.04, version: 6} - {os: ubuntu-24.04, version: 7} - {os: ubuntu-24.04, version: 8} - {os: ubuntu-24.04, version: 9} - {os: ubuntu-24.04, version: 10} - {os: ubuntu-24.04, version: 11} - {os: ubuntu-24.04, version: 12} - {os: ubuntu-24.04, version: 13} runs-on: '${{ matrix.os }}' name: 'Version: ${{ matrix.os }} / ${{ matrix.version }}' steps: - name: Checkout uses: actions/checkout@v3 - id: setup name: Set up Clang uses: ./ with: version: '${{ matrix.version }}' platform: '${{ matrix.platform }}' cc: 1 - name: Build foo.exe uses: ./.github/actions/build-foo with: binary: '${{ steps.setup.outputs.clangxx }}' - name: Run foo.exe uses: ./.github/actions/run-foo - name: Check symlinks uses: ./.github/actions/check-cc with: version: '${{ matrix.version }}' cygwin: strategy: matrix: hardlinks: [0, 1] runs-on: windows-latest name: 'Cygwin: hardlinks${{ matrix.hardlinks }}' # As of January 2023, clang simply doesn't work on Cygwin. # It's also marked "Unmaintained" in the installer. continue-on-error: true steps: - name: Checkout uses: actions/checkout@v3 - name: Clean up PATH uses: egor-tensin/cleanup-path@v3 - name: Install Cygwin uses: egor-tensin/setup-cygwin@v4 - name: Set up Clang uses: ./ with: cygwin: 1 cc: 1 hardlinks: '${{ matrix.hardlinks }}' - name: Build foo.exe uses: ./.github/actions/build-foo if: matrix.hardlinks - name: Build foo.exe uses: ./.github/actions/build-foo-cygwin if: '!matrix.hardlinks' - name: Run foo.exe uses: ./.github/actions/run-foo - name: Check symlinks uses: ./.github/actions/check-cc if: matrix.hardlinks - name: Check symlinks uses: ./.github/actions/check-cc-cygwin if: '!matrix.hardlinks'