Skip to content

ci: verify the images whose healthcheck probe changed - #43

Merged
intech merged 2 commits into
mainfrom
ci/image-build-check
Aug 4, 2026
Merged

ci: verify the images whose healthcheck probe changed#43
intech merged 2 commits into
mainfrom
ci/image-build-check

Conversation

@intech

@intech intech commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Why

#41 switched hris and car-sharing from wget to curl --http2-prior-knowledge, which also meant swapping the package installed in the runtime stage. Nothing built those images, so a probe naming a tool the image does not carry would have shipped — and Docker reports "command not found" exactly like a sick service, so the container just goes unhealthy with no hint why.

That gap was created by #41, so it is closed here rather than left as follow-up.

What it checks

Builds each image, then asserts two things about the artifact:

  1. curl is actually presentdocker run --entrypoint curl … --version.
  2. The baked-in HEALTHCHECK speaks HTTP/2 — an h2c server cannot be probed over HTTP/1.1 at all, so a silent revert to wget would otherwise pass every existing check.

Verified both directions against a real image:

Probe in the image Guard
curl -fsS --http2-prior-knowledge … (current) passes
wget -q --spider … (a revert) fails

gen/ is gitignored and the Dockerfiles copy it in, so the job runs buf:generate first.

Scope

These two examples need a database to run, so they are built and inspected rather than started — enough to catch the failure mode this change introduced, without standing up Postgres and Temporal.

The with-events-* images are left out deliberately, not overlooked: they keep allowHTTP1 at its default of true, so their plain curl -f probe is correct for HTTP/1.1 and was never affected.

Summary by CodeRabbit

  • Tests
    • Expanded container validation to cover both example services.
    • Added automated image builds and checks confirming required tooling is available.
    • Verified container health checks use HTTP/2 probing.
  • Documentation
    • Documented coverage exclusions for the example services.

#41 switched hris and car-sharing from `wget` to `curl --http2-prior-knowledge`,
which also meant swapping the package installed in the runtime stage. Nothing
built those images, so a probe that names a tool the image does not carry would
have shipped: Docker reports "command not found" exactly like a sick service, so
the container just goes unhealthy with no hint why.

The new job builds each image and asserts two things about it -- that `curl` is
actually present, and that the baked-in HEALTHCHECK speaks HTTP/2. The second
assertion is the one that matters: an h2c server cannot be probed over HTTP/1.1
at all, and a silent revert to `wget` would otherwise pass every existing check.
Verified both ways against a real image: the current probe passes the guard, a
`wget` probe fails it.

These two examples need a database to run, so they are built and inspected rather
than started. The `with-events-*` images are left out deliberately: they keep
`allowHTTP1` at its default of `true`, so their plain `curl -f` probe is correct.
@github-actions github-actions Bot added the type:chore Maintenance: refactoring, dependencies, CI/CD label Aug 4, 2026
@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@intech, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 44 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 63905c84-4aa8-47d7-83a4-3b5f31a7fcf3

📥 Commits

Reviewing files that changed from the base of the PR and between 0283236 and 4cc27e0.

📒 Files selected for processing (1)
  • .github/workflows/container-e2e.yml
📝 Walkthrough

Walkthrough

The container E2E workflow now monitors the HRIS and car-sharing Dockerfiles. A matrix job builds both images, verifies curl, and checks HTTP/2 prior-knowledge healthchecks.

Changes

Container CI coverage

Layer / File(s) Summary
Image build validation
.github/workflows/container-e2e.yml
The workflow tracks the HRIS and car-sharing Dockerfiles. The image-build matrix generates proto code, builds each image, verifies curl, and requires --http2-prior-knowledge in the Docker healthcheck.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: CI verification of images affected by the healthcheck probe update.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ci/image-build-check

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

`pnpm/action-setup` failed with "No pnpm version is specified": it resolves the
version from a `packageManager` field, and no example in this repository declares
one -- unlike the connectum monorepo, where the root package.json does.

npm is the better fit anyway. The `allowBuilds` list in `pnpm-workspace.yaml`
exists only because pnpm blocks postinstall scripts, and the one this needs is
`@bufbuild/buf` downloading its binary; npm runs it by default. Verified on a
clean checkout of hris: `npm install` then `npm run buf:generate` produces
`gen/`.
@intech
intech merged commit 69ca146 into main Aug 4, 2026
9 checks passed
@intech
intech deleted the ci/image-build-check branch August 4, 2026 08:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type:chore Maintenance: refactoring, dependencies, CI/CD

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant