Skip to content

Build/test/package Release in CI; add consumer + JNI API tests#363

Merged
nghiemv merged 1 commit into
mainfrom
ci/release-package-api-tests-main
Jun 17, 2026
Merged

Build/test/package Release in CI; add consumer + JNI API tests#363
nghiemv merged 1 commit into
mainfrom
ci/release-package-api-tests-main

Conversation

@nghiemv

@nghiemv nghiemv commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

Follow-up to #361 (now merged into main). This brings the CI/packaging/test work into main#362 was accidentally merged into the fix branch instead of main, so this re-targets that same change set at main.

Closes the loop so the published zip is the exact binary CI built, tested, and checked.

Changes

CI (build-and-test.yml)

  • Matrix keyed by published classifier: linux-x86_64, win-x86_64, darwin-aarch64, darwin-x86_64 (cross-built on the arm64 runner via Rosetta, since GitHub no longer offers an Intel runner). Actions → v4, JDK → Temurin.
  • Build and test the Release configuration (was Debug/default).
  • CPack packages the native + header from the same gated build into a per-classifier artifact, instead of a separately produced zip. zlib gets SKIP_INSTALL_ALL so it isn't packaged alongside.

API-boundary tests (run on every build, need only the built lib)

  • consume_hecdss — links the shared hecdss target and calls the exported C API, exercising the import-lib / symbol-visibility / runtime-load path.
  • jni_load — runs a real JVM that System.load()s javaHeclib and calls a native method, proving the JNI artifact loads and binds in a matching-arch JVM.

Known item

The darwin-x86_64 job currently runs the full ctest suite — including the Dss-C functional test — under Rosetta. If that test proves emulation-sensitive, exclude it on that job (ctest -E Dss-C) rather than letting it gate the linkage/self-containment checks. Left as a follow-up pending observed CI behavior.

Builds on the self-contained fix. Closes the loop so the published zip is the
exact binary CI built, tested, and checked.

CI (build-and-test.yml):
- Matrix by published classifier: linux-x86_64, win-x86_64, darwin-aarch64,
  and darwin-x86_64 (cross-built on the arm64 runner via Rosetta, since GitHub
  no longer offers an Intel runner). Actions to v4, JDK to Temurin.
- Build and test the Release configuration (was Debug/default).
- CPack packages the native + header from the same gated build into a
  per-classifier artifact, instead of a separately produced zip.

API boundary tests (run on every build, need only the built lib):
- consume_hecdss -- links the shared hecdss target and calls the exported C
  API, exercising the import lib / symbol visibility / runtime-load path.
- jni_load -- runs a real JVM that System.load()s javaHeclib and calls a
  native method, proving the JNI artifact loads and binds in a matching JVM.

zlib gets SKIP_INSTALL_ALL so it isn't packaged alongside.

Note: the darwin-x86_64 job still runs the full ctest suite, including the
Dss-C functional test, under Rosetta. If that test is emulation-sensitive,
exclude it on that job (ctest -E) rather than letting it gate linkage checks.
@sonarqubecloud

Copy link
Copy Markdown

@nghiemv nghiemv requested a review from ktarbet June 17, 2026 15:47
@nghiemv

nghiemv commented Jun 17, 2026

Copy link
Copy Markdown
Contributor Author

Hi @ktarbet 😅 Sorry, I targeted the last PR to the wrong branch.

@nghiemv nghiemv merged commit d3a677f into main Jun 17, 2026
6 checks passed
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.

2 participants