Skip to content

chore(ci): fix release-gate java/kotlin (pom drift) + run heavy CI locally to cut Actions cost#102

Merged
dmealing merged 1 commit into
mainfrom
chore/local-ci-reduce-actions-cost
Jun 29, 2026
Merged

chore(ci): fix release-gate java/kotlin (pom drift) + run heavy CI locally to cut Actions cost#102
dmealing merged 1 commit into
mainfrom
chore/local-ci-reduce-actions-cost

Conversation

@dmealing

Copy link
Copy Markdown
Member

What & why

Two coupled problems, fixed together.

1. release-gate (java|kotlin) was RED on main

Root cause: the reactor-excluded integration-test modules
(server/java/integration-tests, integration-tests-kotlin) pinned their parent to
7.4.4-SNAPSHOT while the reactor moved to 7.5.1-SNAPSHOT. They sit outside the
reactor, so the release mvn versions:set silently skipped them — ../pom.xml then
no longer matched the declared parent, Maven rejected relativePath, fell back to
repos, and the SNAPSHOT was absent → "Non-resolvable parent POM".

Fix: bump both to 7.5.1-SNAPSHOT. Verified locally — scripts/integration-test.sh java and kotlin both BUILD SUCCESS.

Recurrence guard: scripts/check-pom-versions.sh (toolchain-free; just grep) asserts
the excluded modules track the reactor version. Wired into .githooks/pre-push and
scripts/ci-local.sh, and the RELEASING.md bump step now calls it out (use the
tree-wide grep, not versions:set).

2. Heavy CI ran on every push/PR — moved local to cut Actions cost

conformance.yml (5-port matrix + full Java reactor + drift/mutation gates) and
integration-tests.yml (5-port Testcontainers) now run on release tags (v*) +
workflow_dispatch only
. The cheap public-repo security gate
(hygiene/leak-scan) still runs on every PR.

New primary correctness gate — run locally before opening/merging a PR:

scripts/ci-local.sh            # full parity: all-port conformance + reactor +
                               # drift/mutation + docker integration suite
scripts/ci-local.sh --quick    # fast TS-centric tier (no other-lang toolchains,
                               # no reactor, no docker)

It SKIPs (loudly) any port whose toolchain is absent. The release tag (v*) still
runs the full matrix before anything publishes — the real gate for published artifacts.

⚠️ Required companion step (admin)

main branch protection currently requires all the checks this PR takes off PR
triggers. A required check that no longer runs sits perpetually pending → PRs can't
merge. Branch protection's required-checks list must be trimmed to what still runs on
PR (leak-scan) in lockstep with this change.

🤖 Generated with Claude Code

…ocal to cut Actions cost

Two coupled problems:

1. release-gate (java|kotlin) was RED on main. The reactor-EXCLUDED integration-test
   modules (server/java/integration-tests, integration-tests-kotlin) pinned their
   parent to 7.4.4-SNAPSHOT while the reactor moved to 7.5.1-SNAPSHOT. They are
   outside the reactor, so the release `mvn versions:set` silently skipped them;
   `../pom.xml` then no longer matched the declared parent → Maven rejected
   relativePath, fell back to repos, and the SNAPSHOT was absent → "Non-resolvable
   parent POM". Fix: bump both to 7.5.1-SNAPSHOT. Verified: scripts/integration-test.sh
   java AND kotlin both BUILD SUCCESS locally.

2. The conformance (5-port matrix + full java reactor + drift/mutation gates) and
   integration-tests (5-port testcontainers) workflows ran on EVERY push and PR —
   expensive. They now run on release tags (v*) + workflow_dispatch only. The cheap
   public-repo SECURITY gate (hygiene / leak-scan) still runs on every PR.

To keep correctness coverage now that the heavy gates are off per-PR:
- scripts/ci-local.sh — full local CI parity (all-port conformance, reactor,
  drift/mutation, docker integration suite) with a fast --quick TS-centric tier;
  SKIPS (loudly) any port whose toolchain is absent.
- scripts/check-pom-versions.sh — toolchain-free guard asserting the excluded
  integration-test modules track the reactor version, so the drift in (1) can't
  silently recur. Wired into .githooks/pre-push (runs on every push) and ci-local.
- RELEASING.md: the java bump must hit the excluded modules (use the tree-wide grep,
  not versions:set) + run the guard.
- CONTRIBUTING.md: run scripts/ci-local.sh before opening/merging a PR.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DV7ad8tggzcpFJzXYvHwRU
@dmealing
dmealing force-pushed the chore/local-ci-reduce-actions-cost branch from 1862558 to 340b8d8 Compare June 29, 2026 23:45
@dmealing
dmealing merged commit bb44e58 into main Jun 29, 2026
1 check passed
@dmealing
dmealing deleted the chore/local-ci-reduce-actions-cost branch June 29, 2026 23:46
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