@@ -23,35 +23,43 @@ jobs:
2323 setup-matrix :
2424 runs-on : ubuntu-latest
2525 outputs :
26- matrix : ${{ steps.mk.outputs.matrix }}
26+ groups : ${{ steps.mk.outputs.groups }}
27+ version : ${{ steps.mk.outputs.version }}
28+ os : ${{ steps.mk.outputs.os }}
2729 steps :
28- - uses : actions/checkout@v4
30+ - uses : actions/checkout@v6
2931 - id : mk
3032 shell : bash
3133 run : |
3234 # Auto-discover test groups from all subdirectory names.
33- # CUDA tests are included but skipped at runtime if no GPU is available (see runtests.jl).
3435 groups=$(find test -mindepth 1 -maxdepth 1 -type d \
3536 | xargs -I{} basename {} | sort \
3637 | jq -R -s -c '[split("\n")[] | select(length > 0)]')
3738
39+ echo "groups=${groups}" >> "$GITHUB_OUTPUT"
40+
3841 # Draft PR: only run ubuntu-latest + version=1
3942 if [[ "${{ github.event_name }}" == "pull_request" && "${{ github.event.pull_request.draft }}" == "true" ]]; then
40- echo "matrix={\"version\":[\"1\"],\"os\":[\"ubuntu-latest\"],\"group\":${groups}}" >> "$GITHUB_OUTPUT"
43+ echo 'version=["1"]' >> "$GITHUB_OUTPUT"
44+ echo 'os=["ubuntu-latest"]' >> "$GITHUB_OUTPUT"
4145 else
42- echo "matrix={\"version\":[\"lts\",\"1\"],\"os\":[\"ubuntu-latest\",\"macOS-latest\",\"windows-latest\"],\"group\":${groups}}" >> "$GITHUB_OUTPUT"
46+ echo 'version=["lts","1"]' >> "$GITHUB_OUTPUT"
47+ echo 'os=["ubuntu-latest","macOS-latest","windows-latest"]' >> "$GITHUB_OUTPUT"
4348 fi
4449
4550 test :
4651 name : " Tests"
4752 needs : setup-matrix
4853 strategy :
4954 fail-fast : false
50- matrix : ${{ fromJSON(needs.setup-matrix.outputs.matrix) }}
55+ matrix :
56+ version : ${{ fromJSON(needs.setup-matrix.outputs.version) }}
57+ os : ${{ fromJSON(needs.setup-matrix.outputs.os) }}
58+ group : ${{ fromJSON(needs.setup-matrix.outputs.groups) }}
5159 runs-on : ${{ matrix.os }}
5260 timeout-minutes : 120
5361 steps :
54- - uses : actions/checkout@v4
62+ - uses : actions/checkout@v6
5563 - uses : julia-actions/setup-julia@v2
5664 with :
5765 version : ${{ matrix.version }}
6068 - uses : julia-actions/julia-runtest@v1
6169 with :
6270 test_args : ' ${{ matrix.group }}${{ github.event.pull_request.draft == true && '' --fast'' || '''' }}'
71+ env :
72+ JULIA_NUM_THREADS : 4
6373 - uses : julia-actions/julia-processcoverage@v1
6474 with :
6575 directories : ' src,ext'
@@ -71,27 +81,22 @@ jobs:
7181
7282 test-nightly :
7383 name : " Tests (nightly)"
74- needs : test
84+ needs : [setup-matrix, test]
7585 if : github.event.pull_request.draft != true
7686 strategy :
7787 fail-fast : false
7888 matrix :
7989 version :
8090 - ' nightly'
81- group :
82- - symmetries
83- - tensors
84- - other
85- - mooncake
86- - chainrules
91+ group : ${{ fromJSON(needs.setup-matrix.outputs.groups) }}
8792 os :
8893 - ubuntu-latest
8994 - macOS-latest
9095 - windows-latest
9196 runs-on : ${{ matrix.os }}
9297 timeout-minutes : 120
9398 steps :
94- - uses : actions/checkout@v4
99+ - uses : actions/checkout@v6
95100 - uses : julia-actions/setup-julia@v2
96101 with :
97102 version : ${{ matrix.version }}
@@ -109,3 +114,27 @@ jobs:
109114 files : lcov.info
110115 token : ${{ secrets.CODECOV_TOKEN }}
111116 fail_ci_if_error : false
117+
118+ compatcheck :
119+ name : " Compat check - ${{ matrix.julia-version }}"
120+ needs : [setup-matrix, test]
121+ if : github.event.pull_request.draft != true
122+ runs-on : ubuntu-latest
123+ strategy :
124+ fail-fast : false
125+ matrix :
126+ downgrade_mode : ['deps']
127+ group : ${{ fromJSON(needs.setup-matrix.outputs.groups) }}
128+ julia-version : ['1.10', '1']
129+ steps :
130+ - uses : actions/checkout@v6
131+ - uses : julia-actions/setup-julia@v2
132+ with :
133+ version : ${{ matrix.julia-version }}
134+ - uses : julia-actions/julia-downgrade-compat@v2
135+ with :
136+ mode : ${{ matrix.downgrade_mode }}
137+ skip : Random, LinearAlgebra, Test, Combinatorics
138+ julia_version : ${{ matrix.julia-version }}
139+ - uses : julia-actions/julia-buildpkg@v1
140+ - uses : julia-actions/julia-runtest@v1
0 commit comments