From 2eb174055f32247b2c9654b4a35193594c0a7074 Mon Sep 17 00:00:00 2001 From: ChrisRackauckas Date: Fri, 29 May 2026 09:33:57 +0000 Subject: [PATCH] =?UTF-8?q?CI:=20unify=20matrix=20to=20lts/1/pre/nightly?= =?UTF-8?q?=20=C3=97=20native=20arch=20per=20OS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Single `ci.yml` for the full version × OS × test-part grid: - versions: `lts`, `1`, `pre`, `nightly` - OSes: ubuntu-latest, macOS-latest, windows-latest - arch via per-OS `include:` — `aarch64` on macOS-latest (native Apple silicon since the 2024 image refresh; previous Rosetta x64 emulation was already producing FP-rounding noise on math tests), `x64` elsewhere - 6 test parts (LOOPVECTORIZATION_TEST=part1..part6) `continue-on-error: true` for `pre` and `nightly` so the recurring upstream Julia incompat (`MethodError: length(::OncePerThread{...})` introduced in Julia 1.13+ that breaks `test/broadcast.jl` and `test/threading.jl`) surfaces as a soft fail without blocking PRs. Drop `ci-julia-nightly.yml` — folded into the unified matrix. Bump `codecov/codecov-action` v3 → v5 (v3 is EOL; `file:` → `files:`). Matrix shape: 4 versions × 3 OSes × 6 parts = 72 test jobs, plus the existing `Documentation` and `Doctests` jobs. Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/workflows/ci-julia-nightly.yml | 66 -------------------------- .github/workflows/ci.yml | 65 ++++++------------------- 2 files changed, 14 insertions(+), 117 deletions(-) delete mode 100644 .github/workflows/ci-julia-nightly.yml diff --git a/.github/workflows/ci-julia-nightly.yml b/.github/workflows/ci-julia-nightly.yml deleted file mode 100644 index 39d8b897..00000000 --- a/.github/workflows/ci-julia-nightly.yml +++ /dev/null @@ -1,66 +0,0 @@ -name: CI (Julia nightly) -on: - pull_request: - branches: - - main - paths-ignore: - - 'LICENSE.md' - - 'README.md' - - 'utils/*' - - '.github/workflows/TagBot.yml' - push: - branches: - - main - paths-ignore: - - 'LICENSE.md' - - 'README.md' - - 'utils/*' - - '.github/workflows/TagBot.yml' - tags: '*' -jobs: - test-julia-nightly: - name: Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ matrix.loopvectorization_test }} - ${{ github.event_name }} - runs-on: ${{ matrix.os }} - strategy: - fail-fast: false - matrix: - version: - - 'nightly' - os: - - ubuntu-latest - - macOS-latest - - windows-latest - arch: - - x64 - loopvectorization_test: - - part1 - - part2 - - part3 - - part4 - - part5 - - part6 - steps: - - uses: actions/checkout@v6 - - uses: julia-actions/setup-julia@v2 - with: - version: ${{ matrix.version }} - arch: ${{ matrix.arch }} - - uses: actions/cache@v4 - env: - cache-name: cache-artifacts - with: - path: ~/.julia/artifacts - key: ${{ runner.os }}-test-${{ env.cache-name }}-${{ hashFiles('**/Project.toml') }} - restore-keys: | - ${{ runner.os }}-test-${{ env.cache-name }}- - ${{ runner.os }}-test- - ${{ runner.os }}- - - uses: julia-actions/julia-buildpkg@v1 - - uses: julia-actions/julia-runtest@v1 - env: - JULIA_NUM_THREADS: 4 - LOOPVECTORIZATION_TEST: ${{ matrix.loopvectorization_test }} - - uses: julia-actions/julia-processcoverage@v1 - - uses: codecov/codecov-action@v3 - with: - file: lcov.info diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index be868508..765ff07a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,6 +21,7 @@ jobs: test: name: Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ matrix.loopvectorization_test }} - ${{ github.event_name }} runs-on: ${{ matrix.os }} + continue-on-error: ${{ matrix.version == 'pre' || matrix.version == 'nightly' }} strategy: fail-fast: false matrix: @@ -28,11 +29,11 @@ jobs: - 'lts' - '1' # automatically expands to the latest stable 1.x release of Julia. - 'pre' + - 'nightly' os: - ubuntu-latest + - macOS-latest - windows-latest - arch: - - x64 loopvectorization_test: - part1 - part2 @@ -41,54 +42,15 @@ jobs: - part5 - part6 include: - - version: 'lts' - os: macOS-latest + # Native arch per OS. `macOS-latest` is Apple silicon since the + # 2024 GitHub Actions image bump; use aarch64 there and x64 + # everywhere else. + - os: ubuntu-latest + arch: x64 + - os: macOS-latest arch: aarch64 - loopvectorization_test: part1 - - version: 'lts' - os: macOS-latest - arch: aarch64 - loopvectorization_test: part2 - - version: 'lts' - os: macOS-latest - arch: aarch64 - loopvectorization_test: part3 - - version: 'lts' - os: macOS-latest - arch: aarch64 - loopvectorization_test: part4 - - version: 'lts' - os: macOS-latest - arch: aarch64 - loopvectorization_test: part5 - - version: 'lts' - os: macOS-latest - arch: aarch64 - loopvectorization_test: part6 - - version: '1' - os: macOS-latest - arch: aarch64 - loopvectorization_test: part1 - - version: '1' - os: macOS-latest - arch: aarch64 - loopvectorization_test: part2 - - version: '1' - os: macOS-latest - arch: aarch64 - loopvectorization_test: part3 - - version: '1' - os: macOS-latest - arch: aarch64 - loopvectorization_test: part4 - - version: '1' - os: macOS-latest - arch: aarch64 - loopvectorization_test: part5 - - version: '1' - os: macOS-latest - arch: aarch64 - loopvectorization_test: part6 + - os: windows-latest + arch: x64 steps: - uses: actions/checkout@v6 - uses: julia-actions/setup-julia@v2 @@ -111,9 +73,10 @@ jobs: JULIA_NUM_THREADS: 4 LOOPVECTORIZATION_TEST: ${{ matrix.loopvectorization_test }} - uses: julia-actions/julia-processcoverage@v1 - - uses: codecov/codecov-action@v3 + - uses: codecov/codecov-action@v5 with: - file: lcov.info + files: lcov.info + token: ${{ secrets.CODECOV_TOKEN }} docs: name: Documentation runs-on: ubuntu-latest