From 0ddfdfd811df16a9d19380dc4ad039d41ce854f0 Mon Sep 17 00:00:00 2001 From: ChrisRackauckas-Claude Date: Tue, 2 Jun 2026 12:49:17 -0400 Subject: [PATCH] Migrate CI to centralized SciML reusable workflows Normalize CI to the Sundials.jl standard set using SciML/.github centralized reusable workflows (pinned @v1): - Tests.yml -> tests.yml@v1 (version "1", preserving the single-version ubuntu matrix; coverage handled by the caller) - Documentation.yml -> documentation.yml@v1 (docs/ + docdeploy/doctests) - FormatCheck.yml -> runic.yml@v1 (centralizes existing Runic check) - SpellCheck.yml -> spellcheck.yml@v1 (new) - Downgrade.yml -> downgrade.yml@v1 (new; julia-version lts, skip Pkg,TOML) - Remove CompatHelper.yml (replaced by Dependabot julia ecosystem) - dependabot.yml: drop crate-ci/typos ignore; add julia blocks for / and /docs Co-Authored-By: Chris Rackauckas Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/dependabot.yml | 19 ++++++-- .github/workflows/CI.yml | 72 ----------------------------- .github/workflows/CompatHelper.yml | 16 ------- .github/workflows/Documentation.yml | 20 ++++++++ .github/workflows/Downgrade.yml | 26 +++++++++++ .github/workflows/FormatCheck.yml | 26 +++++------ .github/workflows/SpellCheck.yml | 19 ++++++++ .github/workflows/Tests.yml | 32 +++++++++++++ 8 files changed, 125 insertions(+), 105 deletions(-) delete mode 100644 .github/workflows/CI.yml delete mode 100644 .github/workflows/CompatHelper.yml create mode 100644 .github/workflows/Documentation.yml create mode 100644 .github/workflows/Downgrade.yml create mode 100644 .github/workflows/SpellCheck.yml create mode 100644 .github/workflows/Tests.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml index ec3b005..f476665 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -5,6 +5,19 @@ updates: directory: "/" # Location of package manifests schedule: interval: "weekly" - ignore: - - dependency-name: "crate-ci/typos" - update-types: ["version-update:semver-patch", "version-update:semver-minor"] + - package-ecosystem: "julia" + directory: "/" + schedule: + interval: "daily" + groups: + all-julia-packages: + patterns: + - "*" + - package-ecosystem: "julia" + directory: "/docs" + schedule: + interval: "daily" + groups: + all-julia-packages: + patterns: + - "*" diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml deleted file mode 100644 index e9ba7a0..0000000 --- a/.github/workflows/CI.yml +++ /dev/null @@ -1,72 +0,0 @@ -name: CI -on: - push: - branches: - - main - tags: ['*'] - pull_request: - workflow_dispatch: -concurrency: - # Skip intermediate builds: always. - # Cancel intermediate builds: only if it is a pull request build. - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }} -jobs: - test: - name: Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ github.event_name }} - runs-on: ${{ matrix.os }} - timeout-minutes: 60 - permissions: # needed to allow julia-actions/cache to proactively delete old caches that it has created - actions: write - contents: read - strategy: - fail-fast: false - matrix: - version: - - '1' - os: - - ubuntu-latest - steps: - - uses: actions/checkout@v6 - - uses: julia-actions/setup-julia@v3 - with: - version: ${{ matrix.version }} - - uses: julia-actions/cache@v3 - - uses: julia-actions/julia-buildpkg@v1 - - uses: julia-actions/julia-runtest@v1 - - uses: julia-actions/julia-processcoverage@v1 - - uses: codecov/codecov-action@v6 - with: - files: lcov.info - token: ${{ secrets.CODECOV_TOKEN }} - fail_ci_if_error: true - docs: - name: Documentation - runs-on: ubuntu-latest - permissions: - actions: write # needed to allow julia-actions/cache to proactively delete old caches that it has created - contents: write - statuses: write - steps: - - uses: actions/checkout@v6 - - uses: julia-actions/setup-julia@v3 - with: - version: '1' - - uses: julia-actions/cache@v3 - - name: Configure doc environment - shell: julia --project=docs --color=yes {0} - run: | - using Pkg - Pkg.develop(PackageSpec(path=pwd())) - Pkg.instantiate() - - uses: julia-actions/julia-buildpkg@v1 - - uses: julia-actions/julia-docdeploy@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - name: Run doctests - shell: julia --project=docs --color=yes {0} - run: | - using Documenter: DocMeta, doctest - using ProcessSimulator - DocMeta.setdocmeta!(ProcessSimulator, :DocTestSetup, :(using ProcessSimulator); recursive=true) - doctest(ProcessSimulator) diff --git a/.github/workflows/CompatHelper.yml b/.github/workflows/CompatHelper.yml deleted file mode 100644 index cba9134..0000000 --- a/.github/workflows/CompatHelper.yml +++ /dev/null @@ -1,16 +0,0 @@ -name: CompatHelper -on: - schedule: - - cron: 0 0 * * * - workflow_dispatch: -jobs: - CompatHelper: - runs-on: ubuntu-latest - steps: - - name: Pkg.add("CompatHelper") - run: julia -e 'using Pkg; Pkg.add("CompatHelper")' - - name: CompatHelper.main() - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - COMPATHELPER_PRIV: ${{ secrets.DOCUMENTER_KEY }} - run: julia -e 'using CompatHelper; CompatHelper.main()' diff --git a/.github/workflows/Documentation.yml b/.github/workflows/Documentation.yml new file mode 100644 index 0000000..d19d07a --- /dev/null +++ b/.github/workflows/Documentation.yml @@ -0,0 +1,20 @@ +name: "Documentation" + +on: + pull_request: + branches: + - main + push: + branches: + - main + tags: '*' + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }} + +jobs: + docs: + name: "Documentation" + uses: "SciML/.github/.github/workflows/documentation.yml@v1" + secrets: "inherit" diff --git a/.github/workflows/Downgrade.yml b/.github/workflows/Downgrade.yml new file mode 100644 index 0000000..ca2a4d7 --- /dev/null +++ b/.github/workflows/Downgrade.yml @@ -0,0 +1,26 @@ +name: "Downgrade" + +on: + pull_request: + branches: + - main + paths-ignore: + - 'docs/**' + push: + branches: + - main + paths-ignore: + - 'docs/**' + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }} + +jobs: + downgrade: + name: "Downgrade" + uses: "SciML/.github/.github/workflows/downgrade.yml@v1" + with: + julia-version: "lts" + skip: "Pkg,TOML" + secrets: "inherit" diff --git a/.github/workflows/FormatCheck.yml b/.github/workflows/FormatCheck.yml index ee667ce..e863ba5 100644 --- a/.github/workflows/FormatCheck.yml +++ b/.github/workflows/FormatCheck.yml @@ -1,22 +1,20 @@ -name: format-check +name: "Format Check" on: + pull_request: + branches: + - main push: branches: - - 'master' - - 'main' - - 'release-' + - main tags: '*' - pull_request: + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }} jobs: runic: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v6 - - uses: julia-actions/setup-julia@v3 - with: - version: '1' - - uses: fredrikekre/runic-action@v1 - with: - version: '1' + name: "Runic" + uses: "SciML/.github/.github/workflows/runic.yml@v1" + secrets: "inherit" diff --git a/.github/workflows/SpellCheck.yml b/.github/workflows/SpellCheck.yml new file mode 100644 index 0000000..7f02ede --- /dev/null +++ b/.github/workflows/SpellCheck.yml @@ -0,0 +1,19 @@ +name: "Spell Check" + +on: + pull_request: + branches: + - main + push: + branches: + - main + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }} + +jobs: + typos: + name: "Spell Check with Typos" + uses: "SciML/.github/.github/workflows/spellcheck.yml@v1" + secrets: "inherit" diff --git a/.github/workflows/Tests.yml b/.github/workflows/Tests.yml new file mode 100644 index 0000000..d41f8f2 --- /dev/null +++ b/.github/workflows/Tests.yml @@ -0,0 +1,32 @@ +name: "Tests" + +on: + pull_request: + branches: + - main + paths-ignore: + - 'docs/**' + push: + branches: + - main + paths-ignore: + - 'docs/**' + +concurrency: + # Skip intermediate builds: always. + # Cancel intermediate builds: only if it is a pull request build. + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }} + +jobs: + tests: + name: "Tests" + strategy: + fail-fast: false + matrix: + version: + - "1" + uses: "SciML/.github/.github/workflows/tests.yml@v1" + with: + julia-version: "${{ matrix.version }}" + secrets: "inherit"