Skip to content

Test

Test #79

Workflow file for this run

# 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') }}
runtodotests: ${{ contains(github.event.pull_request.labels.*.name, 'runtodotests') }}
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') }}
runtodotests: ${{ contains(github.event.pull_request.labels.*.name, 'runtodotests') }}
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') }}
runtodotests: ${{ contains(github.event.pull_request.labels.*.name, 'runtodotests') }}