Skip to content

ci: bump the Google Cloud SDK emulator image to a tag that still exists - #747

Open
oscerd wants to merge 1 commit into
apache:mainfrom
oscerd:ci-issue/pubsub-emulator-image
Open

ci: bump the Google Cloud SDK emulator image to a tag that still exists#747
oscerd wants to merge 1 commit into
apache:mainfrom
oscerd:ci-issue/pubsub-emulator-image

Conversation

@oscerd

@oscerd oscerd commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

What

CamelGooglePubsubITest pinned gcr.io/google.com/cloudsdktool/google-cloud-cli:441.0.0-emulators. That tag no longer exists on gcr.io, so the test fails at class initialisation:

ContainerFetchException: Can't get Docker image: RemoteDockerImage(
    imageName=gcr.io/google.com/cloudsdktool/google-cloud-cli:441.0.0-emulators, ...)
Caused by: NotFoundException: Status 404:
  {"message":"manifest for ...:441.0.0-emulators not found: manifest unknown"}

This is not a per-branch problem

main has been red since 2026-08-27 and every open PR fails identically, on both Java 17 and Java 21, because surefire aborts the reactor on it. The three most recent main runs — the merges of #737, #739 and #707 — all failed with this same CamelGooglePubsubITest.initializationError and nothing else.

It is the only gcr.io image in the tree. The other testcontainers pins (localstack, influxdb, confluentinc/cp-kafka, rabbitmq, Debezium) are Docker Hub images and are unaffected.

Why it happened, and why it will happen again

gcr.io keeps only a rolling window of google-cloud-cli tags — currently 49, from 537.0.0-emulators up — and deletes older ones outright rather than archiving them. 441.0.0 aged out of that window.

Moved to 583.0.0-emulators, the newest available, which buys the most time before the next eviction, with a comment at the call site explaining the failure mode so the next person does not have to re-derive it from a 404.

I did not use the floating emulators tag. It would never 404, but it would make the build non-reproducible and let the emulator change underneath us, which is the opposite of the direction #731 took the build.

Verified, not assumed

  • docker pull ...:441.0.0-emulatorsnot found
  • docker pull ...:583.0.0-emulators → pulls, sha256:07e4b8c3075ca793552fcfaf4808f104ef155d7805d87ade8e01b440463be262
  • the registry tag list confirms 49 -emulators tags, 441.0.0-emulators absent
  • the test itself passes locally against the new image, so the emulator API is still compatible across the 142 releases in between:
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 29.07 s
  -- in org.apache.karaf.camel.itest.CamelGooglePubsubITest
BUILD SUCCESS

Note

Worth considering separately whether these itests should fail soft when an external image cannot be fetched, so that an upstream registry change degrades one module instead of taking down every build in the project.


Claude Code on behalf of Andrea Cosentino

🤖 Generated with Claude Code

https://claude.ai/code/session_01NUwMcSUX951L1pqhiGkC6g

CamelGooglePubsubITest pinned
gcr.io/google.com/cloudsdktool/google-cloud-cli:441.0.0-emulators. That tag has
been deleted from gcr.io, so the test now fails at class initialisation with

  ContainerFetchException: Can't get Docker image
  Caused by: NotFoundException: Status 404: manifest unknown

on both Java 17 and Java 21. It is the only gcr.io image in the tree; the other
testcontainers pins are Docker Hub images, which are unaffected.

This is not specific to any one branch - main has been red since 2026-08-27 and
every open pull request fails the same way, because the surefire run aborts the
whole reactor on it.

gcr.io keeps only a rolling window of google-cloud-cli tags, currently 49 of
them from 537.0.0-emulators up, and deletes older ones outright rather than
archiving them. 441.0.0 fell out of that window. Moved to 583.0.0-emulators,
the newest available, which buys the most time before the next eviction, and
left a comment saying what happens when it recurs. The floating "emulators" tag
would never 404 but would make the build non-reproducible, which is the
opposite of the direction apache#731 took the build.

Verified rather than assumed: 441.0.0-emulators returns 404 from a real docker
pull, 583.0.0-emulators pulls (sha256:07e4b8c3075ca793552fcfaf4808f104ef155d780
5d87ade8e01b440463be262), and the test itself passes against it locally -
Tests run: 1, Failures: 0, Errors: 0 - so the emulator API is still compatible
across the 142 releases in between.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NUwMcSUX951L1pqhiGkC6g
@oscerd
oscerd requested review from essobedo and jbonofre September 3, 2026 07:34
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