Skip build and test on OSes that have no changes #8888
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # This is the main maven workflow for SWT. | |
| # You can run this locally to test changes with the act command https://nektosact.com/ | |
| # For example, to run all linux tests on Java 21: | |
| # act -j build-linux --matrix java:21 --artifact-server-path $PWD/.artifacts | |
| # You may need to download runners on first run, act will ask but if you | |
| # want the big runner there is no progress as it downloads, so you can pull it with | |
| # docker directly: | |
| # docker pull catthehacker/ubuntu:full-latest | |
| name: SWT Matrix Build | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| on: | |
| push: | |
| branches: [ master ] | |
| pull_request: | |
| branches: [ master ] | |
| types: [opened, reopened, synchronize, labeled] | |
| env: | |
| SWT_GTK4: "${{ contains(github.event.pull_request.labels.*.name, 'gtk4') && '1' || '0' }}" | |
| jobs: | |
| event_file: | |
| name: "Event File" | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Upload | |
| uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 | |
| with: | |
| name: Event File | |
| path: ${{ github.event_path }} | |
| changes: | |
| name: Detect changed paths | |
| runs-on: ubuntu-latest | |
| outputs: | |
| # Lint warnings are expected in this block | |
| # https://github.com/dorny/paths-filter/issues/223#issuecomment-2463309889 | |
| win32: ${{ steps.filter.outputs.win32 || 'false' }} | |
| gtk: ${{ steps.filter.outputs.gtk || 'false' }} | |
| cocoa: ${{ steps.filter.outputs.cocoa || 'false' }} | |
| md: ${{ steps.filter.outputs.md || 'false' }} | |
| other: ${{ steps.filter.outputs.other || 'false' }} | |
| steps: | |
| - uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 # v5.0.0 | |
| with: | |
| fetch-depth: 0 # so base/ref SHAs are diffable | |
| - name: Paths filter (PR/Push only) | |
| if: github.event.pull_request.base | |
| # dorney/paths-filter is out of date, so use this fork with | |
| # a specific fix for missing predicate-quantifier in action's | |
| # inputs | |
| # https://github.com/dorny/paths-filter/pull/226#issuecomment-2805358761 | |
| uses: petermetz/paths-filter@5ee2f5d4cf5d7bdd998a314a42da307e2ae1639d | |
| id: filter | |
| with: | |
| predicate-quantifier: 'every' | |
| filters: | | |
| win32: | |
| - '**/win32/**' | |
| gtk: | |
| - '**/gtk/**' | |
| cocoa: | |
| - '**/cocoa/**' | |
| md: | |
| - '**/*.md' | |
| jenkins: | |
| - 'Jenkinsfile' | |
| # "other" = anything not matching the above buckets | |
| other: | |
| - '**' | |
| - '!**/win32/**' | |
| - '!**/gtk/**' | |
| - '!**/cocoa/**' | |
| - '!**/*.md' | |
| - '!Jenkinsfile' | |
| build-linux: | |
| name: Build (Linux) | |
| needs: changes | |
| # push => always; PR => run if gtk changed OR "other" changed (run-everything case) | |
| if: ${{ github.event_name != 'pull_request' || needs.changes.outputs.gtk == 'true' || needs.changes.outputs.other == 'true' }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| java: ['21'] | |
| uses: ./.github/workflows/build.yml | |
| with: | |
| runner: ubuntu-latest | |
| java: ${{ matrix.java }} | |
| native: gtk.linux.x86_64 | |
| performance: ${{ contains(github.event.pull_request.labels.*.name, 'performance') }} | |
| build-windows: | |
| name: Build (Windows) | |
| needs: changes | |
| # push => always; PR => run if win32 changed OR "other" changed (run-everything case) | |
| if: ${{ github.event_name != 'pull_request' || needs.changes.outputs.win32 == 'true' || needs.changes.outputs.other == 'true' }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| java: ['21'] | |
| uses: ./.github/workflows/build.yml | |
| with: | |
| runner: windows-latest | |
| java: ${{ matrix.java }} | |
| native: win32.win32.x86_64 | |
| performance: ${{ contains(github.event.pull_request.labels.*.name, 'performance') }} | |
| build-macos: | |
| name: Build (macOS) | |
| needs: changes | |
| # push => always; PR => run if cocoa changed OR "other" changed (run-everything case) | |
| if: ${{ github.event_name != 'pull_request' || needs.changes.outputs.cocoa == 'true' || needs.changes.outputs.other == 'true' }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| java: ['21'] | |
| native: [cocoa.macosx.x86_64, cocoa.macosx.aarch64] | |
| runner: [macos-15-intel, macos-latest] | |
| exclude: | |
| - runner: macos-latest | |
| native: cocoa.macosx.x86_64 | |
| - runner: macos-15-intel | |
| native: cocoa.macosx.aarch64 | |
| uses: ./.github/workflows/build.yml | |
| with: | |
| runner: ${{ matrix.runner }} | |
| java: ${{ matrix.java }} | |
| native: ${{ matrix.native }} | |
| performance: ${{ contains(github.event.pull_request.labels.*.name, 'performance') }} |