Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/ci-it-disabled-without-docker-332"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Header
Project: im2be-platform-libs · Module: outbox-publisher (test) · Issue: #20 (chronic red CI) · Type: test/ci
TL;DR
RED→GREEN—@Testcontainers(disabledWithoutDocker = true)onOutboxPublisherITso the IT skips (visibly, not errors) when the runner job-container has no Docker, while still running wherever Docker is present. This makesmvn installsucceed on the runner → first green CI on this repo, without losing local IT coverage.Summary
One-line test-annotation change. The PR job runs inside the
java17/maven-node-cicontainer with no Docker socket, so the Testcontainers IT (postgres:15-alpine +@EmbeddedKafka) errored →mvn installred on every PR (#15/#16/#18/#19 all merged green-locally / red-CI). The Testcontainers JUnitExecutionConditionevaluatesdisabledWithoutDockerbefore the@Containerstarts, so the class is cleanly skipped (no error) when Docker is absent. Verified locally (Docker present):OutboxPublisherIT4/4 run (not skipped), full module green, 0 warnings.Findings / Changes
outbox-publisher/.../OutboxPublisherIT.java@Testcontainers→@Testcontainers(disabledWithoutDocker = true)+ a comment citing #20.Verdict
READY— fixes the chronic red CI (option C of #20). This PR's ownmvn installon the runner should report success (IT skipped, no Docker). Option A (mount the runner's Docker socket for real CI IT coverage) remains operator-owned in #20.Risk indicators
Footer
im2be-platform-libs • test/ci • #332 • #20 • files=1 • build=SUCCESS warnings=0 IT=4/4-run-locally • 2026-05-31
Show previous round
hib-pr-reviewer review — PR #21 (affinity-intelligence-rework/im2be-platform-libs)
Round 1 — head
400fe684392b, basemain, triggeropenedTL;DR: CONDITIONAL_APPROVE — kept 1 info-only finding from B (verified), A had 0 findings; no correctness or security concerns.
Summary
Arbitration — Round 1
Recalled Memora context: No prior run history for this PR (first arbitration). No submodule-specific patterns found.
Reconciliation: Reviewer A found 0 issues. Reviewer B raised 1
info-level finding about a//comment block interrupting the class-level annotation stack (lines 56–62). Per Rule 2, I verified the unique-to-B finding by reading the source file at HEAD.Verification result: Confirmed. Lines 55–63 of
OutboxPublisherIT.javaread:The comment sits between two class-level annotations, exactly as B described. B's suggested fix (move prose into the existing class Javadoc as a
<p>paragraph) is sound and matches the file's existing Javadoc style (which ends at line 50 just before@SpringBootTest).Outcome: Kept 1
infofinding from B, dropped 0. No correctness, security, or behavioural concerns. Memora run summary persisted (id 457).Blast Radius
The diff touches a single test file in the
outbox-publishermodule only. The annotation change affects test-class lifecycle in Docker-less environments but has no runtime impact on production code or other modules.BLAST_SCORE: 1/10
CI status (head
400fe684392b)Overall: ✗ failure
2 checks: 2 pending
Related PRs
Findings (1)
[INFO] 7-line
//comment block between class-level annotations breaks annotation-stack conventionoutbox-publisher/src/test/java/com/aim2be/platform/outbox/OutboxPublisherIT.java:56
Lines 56–62 insert a multi-line
//comment between@ActiveProfiles("it")(line 55) and@Testcontainers(disabledWithoutDocker = true)(line 63). Java's style convention expects class-level annotations to be adjacent; explanatory prose belongs in the Javadoc. The rationale is substantive and already references a tracking issue, making it a natural fit for the class Javadoc that currently ends at line 50.Suggested move — add to the existing
/** … */block before@SpringBootTest:Then drop lines 56–62, leaving the annotation stack uninterrupted. No behavioural effect.
Verdict
CONDITIONAL_APPROVE
hib-pr-reviewer • round 1 • 1 finding (1i) • 2026-05-31T16:39:02.928Z → 2026-05-31T16:40:15.358Z • posted-as: pr-reviewer-bot • model: auto
Show previous round
hib-pr-reviewer review — PR #21 (affinity-intelligence-rework/im2be-platform-libs)
Round 2 — head
d67d0e7821ca, basemain, triggersynchronizeTL;DR: NO_NEW_FINDINGS — No new findings this round.
Summary
[quorum-converged] A=0 = B=0. Round 2 — no new findings; prior round-1 finding resolved.
The round-1 open finding ("7-line
//comment block between class-level annotations breaks annotation-stack convention") is fixed: the rationale that previously lived as inline//comments between the annotation stack has been promoted to a proper Javadoc<p>paragraph (lines 51–58), andgrepfor bare^//lines confirms no such block exists anywhere in the file at HEAD.The functional change is correct:
@Testcontainers(disabledWithoutDocker = true)(line 65) instructs the JUnit 5 Testcontainers extension to callassumeTrue(DockerClientFactory.instance().isDockerAvailable())in itsbeforeAllcallback, which aborts the class with a skip (not a failure) before the Spring context is ever loaded—so@EmbeddedKafkaand the@Container-annotated Postgres field are never touched in environments without a Docker socket. The Javadoc paragraph accurately describes this behaviour and cross-references #20.CI status (head
d67d0e7821ca)Overall: ✗ failure
2 checks: 2 pending
Findings
No new findings this round.
Quorum converged on empty findings (A + B both returned 0).
Verdict
NO_NEW_FINDINGS
hib-pr-reviewer • round 2 • 0 findings • 2026-05-31T16:42:01.138Z → 2026-05-31T16:43:50.585Z • posted-as: pr-reviewer-bot • model: auto • [bookkeeping fallback]
Show previous round
hib-pr-reviewer review — PR #21 (affinity-intelligence-rework/im2be-platform-libs)
Round 3 — head
3da2545c77d4, basemain, triggersynchronizeTL;DR: NO_NEW_FINDINGS — No new findings this round.
Summary
[quorum-converged] A=0 = B=0. Round 3 sync has fully resolved the open round-1 finding. The
//comment block that previously interrupted the annotation stack atOutboxPublisherIT.java:56is gone: the rationale has been promoted into the class-level Javadoc (/** … */, lines 51–58) and the annotation stack at lines 60–74 is now cleanly contiguous (@SpringBootTest→@ActiveProfiles→@Testcontainers→@EmbeddedKafka) with no interstitial prose. The uniform replacement of@Testcontainers→@Testcontainers(disabledWithoutDocker = true)across all 11 IT classes is correct, consistent, and low-risk.CI status (head
3da2545c77d4)Overall: ✗ failure
2 checks: 2 pending
Findings
No new findings this round.
Quorum converged on empty findings (A + B both returned 0).
Verdict
NO_NEW_FINDINGS
hib-pr-reviewer • round 3 • 0 findings • 2026-05-31T16:49:55.662Z → 2026-05-31T16:51:15.656Z • posted-as: pr-reviewer-bot • model: auto • [bookkeeping fallback]
With the Testcontainers ITs guarded, the full-reactor `mvn install` proceeded to error-event-publisher, which depends on com.aim2be:proto-observability:1.0.0 — published ONLY to the forgejo-air Forgejo package registry, not Maven Central. The parent pom declared forgejo-air only in <distributionManagement> (deploy), not <repositories> (resolution), so a clean/ephemeral build (the Forgejo Actions runner has no ~/.m2/settings.xml priming forgejo-air) could not find it → CI red at ~1m15s after the ITs. Add a <repositories> entry for forgejo-air. Anonymous READ is allowed (verified HTTP 200 on the proto-observability jar), so NO credentials are needed for resolution; the <server id="forgejo-air"> token stays deploy-only. Verification — BARE container (no ~/.m2 mount, faithful to the Docker-less, settings-less runner) in the exact CI image: - mvn -B install -DskipTests=false -> BUILD SUCCESS, all 8 modules - proto-observability-1.0.0.{pom,jar} downloaded anonymously from forgejo-air - 44 Testcontainers IT methods SKIPPED; all unit tests pass Completes the green-CI fix for #20 (option C). This is the last wall — CI should now report success.hib-pr-reviewer review — PR #21 (affinity-intelligence-rework/im2be-platform-libs)
Round 4 — head
cee031134963, basemain, triggersynchronizeTL;DR: NO_NEW_FINDINGS — No new findings this round.
Summary
[quorum-converged] A=0 = B=0. Round 4 — Prior finding resolved, no new actionable issues.
The round-1 carry-over finding (7-line
//comment block between class-level annotations inOutboxPublisherIT.java) is resolved: the explanation was folded into the Javadoc/** … */block (lines 51–58), and the annotation stack at lines 60–74 is now clean with no interstitial prose.The two substantive changes are both correct:
@Testcontainers(disabledWithoutDocker = true)— applied consistently to all 11 IT classes. This is the right Testcontainers 1.18+ API for SKIP-not-FAIL when no Docker socket is reachable.<repositories>block inpom.xml—<snapshots><enabled>true</enabled></snapshots>is intentional and consistent: a matching<snapshotRepository>already exists in<distributionManagement>(lines 133–137), so snapshots are both published to and resolved from the same Forgejo registry. No credential leakage risk — the comment correctly notes anonymous READ is permitted and the write token lives only insettings.xml.CI status (head
cee031134963)Overall: ⏳ pending
2 checks: 2 pending
Findings
No new findings this round.
Quorum converged on empty findings (A + B both returned 0).
Verdict
NO_NEW_FINDINGS
hib-pr-reviewer • round 4 • 0 findings • 2026-05-31T16:55:16.564Z → 2026-05-31T16:56:26.941Z • posted-as: pr-reviewer-bot • model: auto • [bookkeeping fallback]