From 1c811c2402cba078d12224eb74a2f4e0626280c9 Mon Sep 17 00:00:00 2001 From: "Navid C. Constantinou" Date: Fri, 24 Oct 2025 13:11:26 +1100 Subject: [PATCH 01/10] Enable coverage reporting in CI workflow --- .github/workflows/CI.yml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 5b4e0ac..9fa449b 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -43,4 +43,11 @@ jobs: - uses: julia-actions/julia-buildpkg@v1 - uses: julia-actions/julia-runtest@v1 - + with: + coverage: true + - uses: julia-actions/julia-processcoverage@v1 + - uses: codecov/codecov-action@v5 + with: + token: ${{ secrets.CODECOV_TOKEN }} + files: lcov.info + continue-on-error: true From 5b8bb29385150c0eb8e22d6b615c84a28feeac3e Mon Sep 17 00:00:00 2001 From: "Navid C. Constantinou" Date: Fri, 24 Oct 2025 13:16:27 +1100 Subject: [PATCH 02/10] Add Codecov badge to README Added Codecov badge to README for coverage tracking. --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 07543ed..164c083 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,10 @@ Julia wrapper for [xESMF](https://github.com/pangeo-data/xESMF), a python packag CI + + + + ## Overview XESMF.jl provides a Julia interface to the [xESMF](https://github.com/pangeo-data/xESMF) (xarray Earth System Model Exchange Format) Python library, which provides tools for interpolating and regridding fields between arbitrary grids. From 3d040adc33d2448507814df03261bbd9db095c80 Mon Sep 17 00:00:00 2001 From: "Navid C. Constantinou" Date: Fri, 24 Oct 2025 13:20:41 +1100 Subject: [PATCH 03/10] Rename Documentation.yml to documentation.yml --- .github/workflows/Documentation.yml | 62 +++++++++++++++++++++++++++++ .github/workflows/documentation.yml | 37 ----------------- 2 files changed, 62 insertions(+), 37 deletions(-) create mode 100644 .github/workflows/Documentation.yml delete mode 100644 .github/workflows/documentation.yml diff --git a/.github/workflows/Documentation.yml b/.github/workflows/Documentation.yml new file mode 100644 index 0000000..b8178d9 --- /dev/null +++ b/.github/workflows/Documentation.yml @@ -0,0 +1,62 @@ +name: Documentation + +on: + push: + branches: + - main + tags: "*" + paths: + - ".github/workflows/Documention.yml" + - "docs/**" + - "src/**" + - "Project.toml" + - "CHANGELOG.md" + pull_request: + paths: + - ".github/workflows/Documention.yml" + - "docs/**" + - "src/**" + - "Project.toml" + - "CHANGELOG.md" + release: + +concurrency: + # Same group concurrency as the `DocPreviewsCleanup.yml` workflow, because they both + # git-push to the same branch, so we want to avoid clashes. NOTE: this is + # different from the concurrency group below, which is to cancel successive + # jobs from within the PR. + group: docs-pushing + +jobs: + build: + permissions: + actions: write + contents: write + pull-requests: read + statuses: write + runs-on: ubuntu-latest + timeout-minutes: 20 + 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/') }} + steps: + - uses: actions/checkout@v5 + - uses: julia-actions/setup-julia@v2 + with: + version: "min" + - uses: julia-actions/cache@v2 + id: julia-cache + - uses: julia-actions/julia-docdeploy@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }} + - name: Save Julia depot cache on cancel or failure + id: julia-cache-save + if: cancelled() || failure() + uses: actions/cache/save@v4 + with: + path: | + ${{ steps.julia-cache.outputs.cache-paths }} + key: ${{ steps.julia-cache.outputs.cache-key }} diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml deleted file mode 100644 index 8eb0334..0000000 --- a/.github/workflows/documentation.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Documentation - -on: - push: - branches: - - main - tags: '*' - pull_request: - -jobs: - build: - # These permissions are needed to: - # - Deploy the documentation: https://documenter.juliadocs.org/stable/man/hosting/#Permissions - # - Delete old caches: https://github.com/julia-actions/cache#usage - permissions: - actions: write - contents: write - pull-requests: read - statuses: write - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: julia-actions/setup-julia@v2 - with: - version: '1.11' - - uses: julia-actions/cache@v2 - - name: Install dependencies - shell: julia --color=yes --project=docs {0} - run: | - using Pkg - Pkg.develop(PackageSpec(path=pwd())) - Pkg.instantiate() - - name: Build and deploy - run: julia --color=yes --project=docs docs/make.jl - env: - # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # If authenticating with GitHub Actions token - DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }} # If authenticating with SSH deploy key From b8a26e373b0114045e8607e083cbd050b462185a Mon Sep 17 00:00:00 2001 From: "Navid C. Constantinou" Date: Fri, 24 Oct 2025 13:25:18 +1100 Subject: [PATCH 04/10] Update CI.yml --- .github/workflows/CI.yml | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 9fa449b..06ee765 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -6,25 +6,32 @@ on: pull_request: branches: [ main, master ] +concurrency: + # Skip intermediate builds: always. + # Cancel intermediate builds: always. + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + jobs: test: - name: Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} + name: Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ github.event_name }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: version: - - '1.10' - - '1.11' + - "min" + - "1" os: - ubuntu-latest - - macos-latest + - macOS-latest + - windows-latest arch: - - x64 + - "default" steps: - - uses: actions/checkout@v4 - - uses: julia-actions/setup-julia@v1 + - uses: actions/checkout@v5 + - uses: julia-actions/setup-julia@v2 with: version: ${{ matrix.version }} arch: ${{ matrix.arch }} From 124f5248f9491a7469c72d360d7199bc2d534576 Mon Sep 17 00:00:00 2001 From: "Navid C. Constantinou" Date: Fri, 24 Oct 2025 13:31:52 +1100 Subject: [PATCH 05/10] Update CI workflow to include new version matrix --- .github/workflows/CI.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 06ee765..44a00b2 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -20,8 +20,9 @@ jobs: fail-fast: false matrix: version: - - "min" - - "1" + - '1.10' + - '1.11' + - '1.12' os: - ubuntu-latest - macOS-latest From ca3ad7b8c0e5bf8e399728e04b4ffd6568aa8e2c Mon Sep 17 00:00:00 2001 From: "Navid C. Constantinou" Date: Fri, 24 Oct 2025 13:51:57 +1100 Subject: [PATCH 06/10] Install ESMF/ESMPy for XESMF.jl on Windows Add step to install ESMF/ESMPy on Windows for XESMF.jl --- .github/workflows/CI.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 44a00b2..5164429 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -50,6 +50,11 @@ jobs: - uses: julia-actions/julia-buildpkg@v1 + # 🧠 Only on Windows — manually add ESMF/ESMPy + - name: Install ESMF/ESMPy for XESMF.jl + if: runner.os == 'Windows' + run: julia -e 'using CondaPkg; CondaPkg.add(["esmf", "esmpy"])' + - uses: julia-actions/julia-runtest@v1 with: coverage: true From 7cff068532d69d8416a705e3cb52b5aea99d18b6 Mon Sep 17 00:00:00 2001 From: "Navid C. Constantinou" Date: Fri, 24 Oct 2025 13:54:37 +1100 Subject: [PATCH 07/10] Update CI workflow to install CondaPkg before ESMF/ESMPy --- .github/workflows/CI.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 5164429..5c04a1c 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -53,7 +53,9 @@ jobs: # 🧠 Only on Windows — manually add ESMF/ESMPy - name: Install ESMF/ESMPy for XESMF.jl if: runner.os == 'Windows' - run: julia -e 'using CondaPkg; CondaPkg.add(["esmf", "esmpy"])' + run: | + julia -e 'import Pkg; Pkg.add("CondaPkg")' + julia -e 'using CondaPkg; CondaPkg.add(["esmf", "esmpy"])' - uses: julia-actions/julia-runtest@v1 with: From 1337b08a89ed5ff2f6367ca025dd5e50e2c19f81 Mon Sep 17 00:00:00 2001 From: "Navid C. Constantinou" Date: Fri, 24 Oct 2025 14:20:22 +1100 Subject: [PATCH 08/10] Update CI workflow to remove Windows steps Removed Windows-specific installation steps for ESMF/ESMPy. --- .github/workflows/CI.yml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 5c04a1c..f0f80c1 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -26,7 +26,6 @@ jobs: os: - ubuntu-latest - macOS-latest - - windows-latest arch: - "default" @@ -50,13 +49,6 @@ jobs: - uses: julia-actions/julia-buildpkg@v1 - # 🧠 Only on Windows — manually add ESMF/ESMPy - - name: Install ESMF/ESMPy for XESMF.jl - if: runner.os == 'Windows' - run: | - julia -e 'import Pkg; Pkg.add("CondaPkg")' - julia -e 'using CondaPkg; CondaPkg.add(["esmf", "esmpy"])' - - uses: julia-actions/julia-runtest@v1 with: coverage: true From 8f6a0fdb9581eae62c683c3c97b34ff48052fd52 Mon Sep 17 00:00:00 2001 From: "Navid C. Constantinou" Date: Sat, 25 Oct 2025 07:04:44 +1100 Subject: [PATCH 09/10] Update DocPreviewsCleanup.yml --- .github/workflows/DocPreviewsCleanup.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/DocPreviewsCleanup.yml b/.github/workflows/DocPreviewsCleanup.yml index cbed7d7..176025f 100644 --- a/.github/workflows/DocPreviewsCleanup.yml +++ b/.github/workflows/DocPreviewsCleanup.yml @@ -10,10 +10,10 @@ on: lookback: default: 3 -# Ensure that only one "Doc Previews Cleanup" workflow is force pushing at a time concurrency: - group: doc-preview-cleanup - cancel-in-progress: false + # Same group concurrency as the `Documentation.yml` workflow, because they both + # git-push to the same branch, so we want to avoid clashes. + group: docs-pushing jobs: doc-preview-cleanup: @@ -22,7 +22,7 @@ jobs: contents: write steps: - name: Checkout gh-pages branch - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: ref: gh-pages - name: Delete preview and history + push changes From e96fbb5a58646dce1393d650e9d8d686ed2b8f52 Mon Sep 17 00:00:00 2001 From: "Navid C. Constantinou" Date: Sat, 25 Oct 2025 07:06:42 +1100 Subject: [PATCH 10/10] Update Julia version and simplify workflow steps --- .github/workflows/Documentation.yml | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/.github/workflows/Documentation.yml b/.github/workflows/Documentation.yml index b8178d9..2396dce 100644 --- a/.github/workflows/Documentation.yml +++ b/.github/workflows/Documentation.yml @@ -45,18 +45,8 @@ jobs: - uses: actions/checkout@v5 - uses: julia-actions/setup-julia@v2 with: - version: "min" - - uses: julia-actions/cache@v2 - id: julia-cache + version: '1.10' - uses: julia-actions/julia-docdeploy@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }} - - name: Save Julia depot cache on cancel or failure - id: julia-cache-save - if: cancelled() || failure() - uses: actions/cache/save@v4 - with: - path: | - ${{ steps.julia-cache.outputs.cache-paths }} - key: ${{ steps.julia-cache.outputs.cache-key }}