8000 ci: consumer-test the fat JAR on every platform, before tagging and after publishing by adityamukho · Pull Request #12 · project-minigraf/minigraf-java · GitHub
[go: up one dir, main page]

Skip to content

ci: consumer-test the fat JAR on every platform, before tagging and after publishing - #12

Merged
adityamukho merged 1 commit into
mainfrom
ci/consumer-tests
Oct 20, 2026
Merged

adityamukho merged 1 commit into
mainfrom
ci/consumer-tests

Conversation

@adityamukho
@adityamukho adityamukho commented Oct 20, 2026 •
Copy link
Copy Markdown
Contributor

Plan step 3 (main) of the core binding consumer-test spec (docs/superpowers/specs/2026-10-20-binding-consumer-tests-design.md). The v2.x part merged as #11.

Changes

  • package.yml:
    • builds the 7 natives (moved from ci.yml), then the fat JAR at the given version into build/m2;
    • checks the jar holds MiniGrafDb, all 7 natives, and a JNA dependency;
    • checks a clean rebuild is byte-identical;
    • takes an artifact-prefix, so one run can package two refs.
  • build.gradle.kts: reproducible archives and the build/m2 dist repository.
  • consumer-test/: a Gradle project that depends on minigraf-jvm:<v> by Maven coordinates only (local mode: from the built artifacts exclusively). It runs the README quick start in Kotlin, and the consumer contract from Java: in memory, file-backed across a reopen, and MiniGrafException on invalid Datalog. run.sh local|registry checks the resolved classpath for the version under test and JNA. readme_sync.py checks the README.
  • ci.yml:
    • package;
    • a consumer test on Linux x64, Linux arm64, macOS, Windows x64, Windows arm64 (Microsoft JDK, since Temurin has no Windows arm64 build of 17) and Alpine;
    • readme-sync;
    • on PRs to main: package-v2x and consumer-v2x. These package and consumer-test the v2.x branch with this PR's workflows, because 2.0.x releases run main's workflows on v2.x. This is the failure mode of java#8.
  • release.yml:
    • The test job builds and consumer-tests the jar at the release version.
    • assemble-and-publish rebuilds from the tag, and refuses unless the file set and every byte match the tested dist-jar. Then it signs and publishes with nmcp.
    • verify-published waits for Maven Central, runs the consumer test on all 6 platforms, and opens a release-broken issue if it fails.
    • The README versions are stamped at release.
  • README: current version, and the real transact output.

Change to the plan

The plan says to replace nmcp with the Central Portal publisher API. This PR keeps nmcp and does the rebuild plus byte-compare instead, as Android does (android#8).

Found on the way

The 2.x jar doesn't load on Alpine or Windows arm64: java#13, fixed on v2.x by #11. On main the loader already handles both, and this PR's Alpine and Windows arm64 legs pass.

Codex review: one point. consumer-v2x uses v2.x's own consumer-test/, which arrived with #11. That's intended, because the 2.x API differs.

🤖 Generated with Claude Code

https://claude.ai/code/session_01PtCdzbJMSS1V8qEPaJ4jXz

…fter publishing

- package.yml builds the natives (moved from ci.yml) and the fat JAR at
  the given version into build/m2, checks it holds MiniGrafDb, all 7
  natives and a JNA dependency, and that a clean rebuild is
  byte-identical; build.gradle.kts gets reproducible archives and the
  dist repository.
- consumer-test/: a Gradle project that depends on minigraf-jvm by Maven
  coordinates runs the README quick start (Kotlin) and the consumer
  contract from Java (in memory, file-backed reopen, MiniGrafException);
  run.sh local|registry. readme_sync.py checks the README against it.
- ci.yml: package, consumer test on Linux x64/arm64, macOS, Windows
  x64/arm64 and Alpine, readme-sync; on PRs to main, package and
  consumer-test v2.x with this PR's workflows, since 2.0.x releases use
  main's.
- release.yml: the test job builds and consumer-tests the jar at the
  release version; publish rebuilds it, refuses unless the file set and
  bytes match the tested jar, then signs and publishes; verify-published
  installs it from Maven Central on all six platforms and opens a
  release-broken issue on failure; README versions are stamped.
- README: current version, the real transact output.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PtCdzbJMSS1V8qEPaJ4jXz
@adityamukho
adityamukho marked this pull request as ready for review October 20, 2026 19:44
@adityamukho
adityamukho merged commit 5f08ecb into main Oct 20, 2026
59 of 60 checks passed
@adityamukho
adityamukho deleted the ci/consumer-tests branch October 20, 2026 19:57
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

0