Skip to content

Modernize CI setup - #850

Merged
devmotion merged 1 commit into
mainfrom
dmw/modernize-ci
Oct 19, 2026
Merged

devmotion merged 1 commit into
mainfrom
dmw/modernize-ci

Conversation

@devmotion

@devmotion devmotion commented Oct 19, 2026 •

Copy link
Copy Markdown
Member

Brings the CI setup in line with JuliaDiff/ChainRulesCore.jl#715.

CI changes

  • Dependabot replaces CompatHelper: adds a julia ecosystem entry for /, grouping package updates into one weekly PR. CompatHelper.yml is removed.
  • Spell check: new SpellCheck.yml workflow running crate-ci/typos.
  • Test matrix: still Linux only. lts and 1 with arch: default, plus the 32-bit x86 job on 1. pre is added and allowed to fail. The separate JuliaNightly.yml workflow is removed.
  • IntegrationTest:
    • Adds permissions and julia-actions/cache.
    • Pins julia-buildpkg@v1 instead of @latest and drops the redundant arch: x64.
    • Tests downstream packages in a temporary environment with both packages deved, as in ChainRulesCore.
    • Removes the commented-out ReversePropagation and Diffractor entries.
  • format / VersionVigilante:
    • Pin setup-julia@v3 instead of @latest.
    • Fix the VersionVigilante labeller steps, which called github.issues.*. actions/github-script v8 only exposes github.rest.issues.*, so these steps failed silently behind continue-on-error.
  • Bumps actions/checkout to v7 and julia-actions/setup-julia to v3 throughout.

Typo fixes

Fixes the 8 misspellings found by typos in comments and the README. There are no functional changes.

Julia nightly

Nightly currently fails in test/rulesets/LinearAlgebra/factorization.jl. The cause is JuliaLang/LinearAlgebra.jl#1717, which landed in Julia 1.15.0-DEV.1 via JuliaLang/julia#63897. Since then, eigen!/eigvals! of a StridedMatrix{<:BlasComplex} always return complex eigenvalues, even for Hermitian input. Our rules don't handle this yet:

  • frule(eigen!) and frule(eigvals!) forward Hermitian input to the Hermitian rules and return real values and tangents.
  • The rrule(eigen) pullback picks its Hermitian branch with eltype(λ) <: Real, so it now takes the general path, which assumes the geevx phase convention, and computes the wrong ∂A.

Nightly is no longer tested after this PR. This will show up again once Julia 1.15 reaches the pre channel and can be fixed separately.

Repo settings needed

  • Add CODECOV_TOKEN as a Dependabot secret (Settings → Secrets and variables → Dependabot). Dependabot PRs can't read normal Actions secrets, and fail_ci_if_error: true would otherwise fail CI on them.
  • Update the required status checks:
    • remove JuliaNightly
    • add Spell Check
    • replace the x64 test checks with the new default job names

Testing

  • typos passes locally on the whole repo (typos 1.50.3).
  • The workflow files parse as valid YAML. actionlint was not run.

🤖 Generated with Claude Code

Bring the CI setup in line with ChainRulesCore (JuliaDiff/ChainRulesCore.jl#715):

- Replace CompatHelper with Dependabot's `julia` ecosystem
- Add a `typos` spell check workflow and fix the misspellings it finds
- Test `pre` on Linux with allowed failures instead of a separate
  JuliaNightly workflow
- Add cache and permissions to IntegrationTest and test downstream
  packages in a temporary environment
- Pin `setup-julia` instead of using `@latest` and fix the
  VersionVigilante labeller for `actions/github-script` v8

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@codecov

codecov Bot commented Oct 19, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 96.57%. Comparing base (2d84375) to head (de1616f).

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #850   +/-   ##
=======================================
  Coverage   96.57%   96.57%           
=======================================
  Files          28       28           
  Lines        3618     3618           
=======================================
  Hits         3494     3494           
  Misses        124      124           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@devmotion
devmotion merged commit 6f0ce33 into main Oct 19, 2026
9 of 11 checks passed
@devmotion
devmotion deleted the dmw/modernize-ci branch October 19, 2026 14:29
devmotion added a commit to JuliaDiff/ChainRulesTestUtils.jl that referenced this pull request Oct 20, 2026
* Fix typos

Fix misspellings in README, docstrings, comments and tests found by
typos, plus two it misses ("based ion", "a arbitrary").

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Modernize CI setup

Bring the CI setup in line with ChainRulesCore (JuliaDiff/ChainRulesCore.jl#715)
and ChainRules (JuliaDiff/ChainRules.jl#850):

- Replace CompatHelper with Dependabot's `julia` ecosystem
- Add a `typos` spell check workflow
- Test `pre` on Linux with allowed failures instead of a separate
  JuliaNightly workflow, and upload coverage from the CI jobs
- Build the docs in the CI workflow on Julia 1; the separate Documenter
  workflow only ran on pushes to the non-existent `master` branch
- Run IntegrationTest on `main`, add cache and permissions, and test
  downstream packages in a temporary environment
- Add concurrency and permissions everywhere and update action versions
  (no more `@latest`)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Modernize Julia setup

Bring the package setup in line with ChainRulesCore (JuliaDiff/ChainRulesCore.jl#717):

- Require Julia 1.10 (the current LTS) and drop the obsolete version
  checks in the tests
- Remove the Compat dependency (`only` is in Base since Julia 1.4)
- Add compat entries for the stdlibs
- Move the test dependencies to test/Project.toml and make the test and
  docs environments part of a workspace, using [sources] instead of
  `Pkg.develop` and a checked-in docs/Manifest.toml
- Update Documenter to v1 and fix the doctests, which were silently
  failing with Documenter 0.27: ignore `Test Summary` tables (they
  differ between `makedocs` and `doctest` and across Julia versions) and
  don't run the deliberately failing `test_rrule` example, whose output
  is random
- Set `devbranch = "main"` in `deploydocs`

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Only import `Test.eval_test` on Julia < 1.13

Since JuliaLang/julia@d934b03 (1.13.0-DEV.300) `Test.eval_test` is replaced
by `eval_test_comparison` and `eval_test_function`, so importing it
unconditionally warns that the imported binding was undeclared.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant