From 50d9d2f1ccb4e72467bcfb304527ba343b0c6b6d Mon Sep 17 00:00:00 2001 From: Sean Arms <67096+lesserwhirls@users.noreply.github.com> Date: Tue, 10 Feb 2026 11:03:45 -0700 Subject: [PATCH 1/5] Update github actions actions/cache@v4 -> v5 actions/checkout@v4 -> v6 actions/download-artifact@v4 -> v7 actions/upload-artifact@v4 -> v6 Unidata/thredds-test-action@v3 -> v4 Additionally, address EACCESS errors related to the build-logic-ncj directory when uploading artifacts of the test results upon failure. --- .github/workflows/deps.yml | 2 +- .github/workflows/docs-tutorials.yml | 4 ++-- .github/workflows/docs.yml | 6 +++--- .github/workflows/libaec.yml | 8 ++++---- .github/workflows/libblosc2.yml | 8 ++++---- .github/workflows/style.yml | 4 ++-- .github/workflows/test-native-compression.yml | 6 +++--- .github/workflows/tests.yml | 13 ++++++------- 8 files changed, 25 insertions(+), 26 deletions(-) diff --git a/.github/workflows/deps.yml b/.github/workflows/deps.yml index e28787f630..cba6596dd1 100644 --- a/.github/workflows/deps.yml +++ b/.github/workflows/deps.yml @@ -5,7 +5,7 @@ jobs: name: Check fresh compile and assemble of netCDF-Java project runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Set up JDK 17 uses: actions/setup-java@v5 with: diff --git a/.github/workflows/docs-tutorials.yml b/.github/workflows/docs-tutorials.yml index ed2a099634..26d6d661c0 100644 --- a/.github/workflows/docs-tutorials.yml +++ b/.github/workflows/docs-tutorials.yml @@ -6,7 +6,7 @@ jobs: name: netCDF-Java Documentation Code Deprecation Check runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Setup Java 8, 17 uses: actions/setup-java@v5 with: @@ -15,7 +15,7 @@ jobs: 8 17 - name: Cache Gradle packages - uses: actions/cache@v4 + uses: actions/cache@v5 with: path: | ~/.gradle/caches diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 5658e210af..5ce3156c5a 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -10,14 +10,14 @@ jobs: name: netCDF-Java Documentation Build Check runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Set up JDK 17 uses: actions/setup-java@v5 with: distribution: 'temurin' java-version: '17' - name: Cache Gradle packages - uses: actions/cache@v4 + uses: actions/cache@v5 with: path: | ~/.gradle/caches @@ -29,7 +29,7 @@ jobs: run: ./gradlew buildJekyllSite - if: success() name: Upload a preview of the rendered html - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: documentation_${{ github.sha }} path: docs/build/site diff --git a/.github/workflows/libaec.yml b/.github/workflows/libaec.yml index bbb573ddfc..faf8108f7f 100644 --- a/.github/workflows/libaec.yml +++ b/.github/workflows/libaec.yml @@ -32,7 +32,7 @@ jobs: runs-on: ${{ matrix.build_env.os }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: repository: 'MathisRosenhauer/libaec' ref: 'v1.1.3' @@ -67,7 +67,7 @@ jobs: cp ${{ matrix.build_env.lib }} resources/${{ matrix.build_env.jna_id }} - name: Upload ${{ matrix.build_env.jna_id }} artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: libaec-${{ matrix.build_env.jna_id }} path: ${{ steps.strings.outputs.build-dir }}/resources @@ -78,7 +78,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@v7 with: pattern: libaec-* path: native/resources/ @@ -88,7 +88,7 @@ jobs: run: find native/ -type f -exec ls -lh {} \; - name: Upload merged artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: libaec-native-1.1.3-${{ github.sha }} path: native/ diff --git a/.github/workflows/libblosc2.yml b/.github/workflows/libblosc2.yml index 80972bfdf7..f9ffbbf959 100644 --- a/.github/workflows/libblosc2.yml +++ b/.github/workflows/libblosc2.yml @@ -28,7 +28,7 @@ jobs: run: | echo "build-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT" - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: repository: 'Blosc/c-blosc2' ref: "v2.22.0" @@ -58,7 +58,7 @@ jobs: cp -L ${{ matrix.build_env.lib }} resources/${{ matrix.build_env.jna_id }} - name: Upload ${{ matrix.build_env.jna_id }} artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: libblosc2-${{ matrix.build_env.jna_id }} path: ${{ steps.strings.outputs.build-dir }}/resources @@ -69,7 +69,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@v7 with: pattern: libblosc2-* path: native/resources/ @@ -79,7 +79,7 @@ jobs: run: find native/ -type f -exec ls -lh {} \; - name: Upload merged artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: libblosc2-native-2.22.0-${{ github.sha }} path: native/ diff --git a/.github/workflows/style.yml b/.github/workflows/style.yml index e8fa5f8dff..c1caa4bf88 100644 --- a/.github/workflows/style.yml +++ b/.github/workflows/style.yml @@ -5,14 +5,14 @@ jobs: name: Code Style Check runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Set up JDK 17 uses: actions/setup-java@v5 with: distribution: 'temurin' java-version: '17' - name: Cache Gradle packages - uses: actions/cache@v4 + uses: actions/cache@v5 with: path: | ~/.gradle/caches diff --git a/.github/workflows/test-native-compression.yml b/.github/workflows/test-native-compression.yml index ad3592d646..58efe262af 100644 --- a/.github/workflows/test-native-compression.yml +++ b/.github/workflows/test-native-compression.yml @@ -22,7 +22,7 @@ jobs: name: netCDF-Java Native Compression Tests runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Setup JDK 8, 17 if: ${{ matrix.os == 'ubuntu-24.04' || matrix.os == 'macos-15-intel' }} uses: actions/setup-java@v5 @@ -38,7 +38,7 @@ jobs: distribution: 'temurin' java-version: '21' - name: Cache Gradle packages - uses: actions/cache@v4 + uses: actions/cache@v5 with: path: | ~/.gradle/caches @@ -54,7 +54,7 @@ jobs: - name: Run libaec JNA tests (JDK 21 tests) if: ${{ matrix.os != 'ubuntu-24.04' && matrix.os != 'macos-15-intel' }} run: ./gradlew clean :libaec-jna:test21 - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v6 if: failure() with: name: NativeCompression_JUnit_Results_${{ github.sha }}_-${{ matrix.os }} diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index eeee9ed0da..6004e33a1e 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -10,9 +10,9 @@ jobs: java-version: [8, 11, 17, 21] java-vendor: ['zulu', 'temurin', 'corretto'] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Build with ${{ matrix.java-vendor }} 17 and run tests with ${{ matrix.java-vendor }} ${{ matrix.java-version }} - uses: Unidata/thredds-test-action@v3 + uses: Unidata/thredds-test-action@v4 with: java-vendor: ${{ matrix.java-vendor }} java-version: 17 @@ -20,12 +20,11 @@ jobs: test-command: '-Dorg.gradle.java.installations.fromEnv=JDK8 --info --stacktrace test' env: JDK8: /usr/thredds-test-environment/${{ matrix.java-vendor }}8 - - name: Prep for artifact upload + - name: Cleanup build-logic-ncj build directory if: failure() - run: rm -rf build-logic-ncj/build/tmp - - uses: actions/upload-artifact@v4 + run: sudo rm -rf build-logic-ncj/build/ + - uses: actions/upload-artifact@v6 if: failure() with: name: netCDF-Java_JUnit_Results_${{ github.sha }}_${{ matrix.java-vendor }}-${{ matrix.java-version }} - path: | - ${{ github.workspace }}/**/build/reports/tests/**/* + path: ${{ github.workspace }}/**/build/reports/* From a4cc954008215606399a03d24dc3e0b7d87fa3ff Mon Sep 17 00:00:00 2001 From: Sean Arms <67096+lesserwhirls@users.noreply.github.com> Date: Tue, 10 Feb 2026 11:40:47 -0700 Subject: [PATCH 2/5] Fix tests to run with matrix version, not just 8 --- .github/workflows/tests.yml | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 6004e33a1e..3e581aa1ba 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -11,15 +11,26 @@ jobs: java-vendor: ['zulu', 'temurin', 'corretto'] steps: - uses: actions/checkout@v6 + - name: Build with ${{ matrix.java-vendor }} 17 and run tests with ${{ matrix.java-vendor }} 8 + if: ${{ matrix.java-version == 8 }} + uses: Unidata/thredds-test-action@v4 + with: + java-vendor: ${{ matrix.java-vendor }} + java-version: 17 + build-tool: 'gradlew' + test-command: '-Dorg.gradle.java.installations.fromEnv=TEST_JDK --info --stacktrace test' + env: + TEST_JDK: /usr/thredds-test-environment/${{ matrix.java-vendor }}8 - name: Build with ${{ matrix.java-vendor }} 17 and run tests with ${{ matrix.java-vendor }} ${{ matrix.java-version }} + if: ${{ matrix.java-version != 8 }} uses: Unidata/thredds-test-action@v4 with: java-vendor: ${{ matrix.java-vendor }} java-version: 17 build-tool: 'gradlew' - test-command: '-Dorg.gradle.java.installations.fromEnv=JDK8 --info --stacktrace test' + test-command: '-Dorg.gradle.java.installations.fromEnv=TEST_JDK --info --stacktrace testWithJdk${{ matrix.java-version }}' env: - JDK8: /usr/thredds-test-environment/${{ matrix.java-vendor }}8 + TEST_JDK: /usr/thredds-test-environment/${{ matrix.java-vendor }}${{ matrix.java-version }} - name: Cleanup build-logic-ncj build directory if: failure() run: sudo rm -rf build-logic-ncj/build/ From 067dd196e630503234cfb8f95c55377ef2a47793 Mon Sep 17 00:00:00 2001 From: Sean Arms <67096+lesserwhirls@users.noreply.github.com> Date: Tue, 10 Feb 2026 12:33:35 -0700 Subject: [PATCH 3/5] Fix testing for gcdm --- cdm/gcdm/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cdm/gcdm/build.gradle.kts b/cdm/gcdm/build.gradle.kts index 4b1ec11458..9594137807 100644 --- a/cdm/gcdm/build.gradle.kts +++ b/cdm/gcdm/build.gradle.kts @@ -5,6 +5,7 @@ import com.github.psxpaul.task.JavaExecFork import com.google.protobuf.gradle.id +import org.gradle.kotlin.dsl.get plugins { id("ncj-java-library-conventions") @@ -83,7 +84,6 @@ val startDaemon = waitForPort = 16111 waitForOutput = "Server started, listening on 16111" dependsOn(tasks.testClasses) - doLast { stopAfter = tasks.named("test") } } -tasks.test { dependsOn(startDaemon) } +tasks.withType { dependsOn(startDaemon) } From 8c298123d9c48f4e8f97699b6cd9a54634009cd2 Mon Sep 17 00:00:00 2001 From: Sean Arms <67096+lesserwhirls@users.noreply.github.com> Date: Tue, 10 Feb 2026 12:46:20 -0700 Subject: [PATCH 4/5] GitHub actions test matrix update * add JDK version 25 * remove zulu JDK vendor --- .github/workflows/tests.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 3e581aa1ba..716e2f6dd1 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -7,8 +7,8 @@ jobs: strategy: matrix: # test against latest 8, 11, 17, 21 of zulu and temurin java - java-version: [8, 11, 17, 21] - java-vendor: ['zulu', 'temurin', 'corretto'] + java-version: [8, 11, 17, 21, 25] + java-vendor: ['temurin', 'corretto'] steps: - uses: actions/checkout@v6 - name: Build with ${{ matrix.java-vendor }} 17 and run tests with ${{ matrix.java-vendor }} 8 From a79547301fd9432d107022dbef3c97a1f0927ed3 Mon Sep 17 00:00:00 2001 From: Sean Arms <67096+lesserwhirls@users.noreply.github.com> Date: Tue, 10 Feb 2026 13:30:42 -0700 Subject: [PATCH 5/5] Ensure bufr table is a file in addLookupFile() Starting in Java 25, the exsits method on File will return true for an empty string (which is interperted as the current user directory). --- bufr/src/main/java/ucar/nc2/iosp/bufr/tables/BufrTables.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bufr/src/main/java/ucar/nc2/iosp/bufr/tables/BufrTables.java b/bufr/src/main/java/ucar/nc2/iosp/bufr/tables/BufrTables.java index b4466caa43..66b45eda77 100644 --- a/bufr/src/main/java/ucar/nc2/iosp/bufr/tables/BufrTables.java +++ b/bufr/src/main/java/ucar/nc2/iosp/bufr/tables/BufrTables.java @@ -140,6 +140,8 @@ public static synchronized void addLookupFile(String filename) throws FileNotFou if (lookups == null) lookups = new ArrayList<>(); File f = new File(filename); + if (f.isDirectory()) + throw new FileNotFoundException(filename + " is a directory"); if (!f.exists()) throw new FileNotFoundException(filename + " not found"); lookups.add(filename);