• Home
Name Date Size #Lines LOC

..--

distribtest/22-Oct-2025-1,2581,040

grpc_artifact_centos6_x64/22-Oct-2025-4838

grpc_artifact_centos6_x86/22-Oct-2025-4838

grpc_artifact_protoc_aarch64/22-Oct-2025-2017

grpc_artifact_python_linux_armv7/22-Oct-2025-13988

grpc_artifact_python_manylinux2014_aarch64/22-Oct-2025-6960

grpc_artifact_python_manylinux2014_x64/22-Oct-2025-7262

grpc_artifact_python_manylinux2014_x86/22-Oct-2025-7362

grpc_artifact_python_musllinux_1_1_x64/22-Oct-2025-6658

grpc_artifact_python_musllinux_1_1_x86/22-Oct-2025-6557

grpc_clang_format/22-Oct-2025-11175

grpc_clang_tidy/22-Oct-2025-6032

grpc_dist_proto/22-Oct-2025-6448

grpc_scan_build/22-Oct-2025-3226

interoptest/22-Oct-2025-1,9341,210

observability-test/cpp/22-Oct-2025-11656

test/22-Oct-2025-3,0132,377

README.mdD22-Oct-20253 KiB8058

grpc_artifact_centos6_x64.current_versionD22-Oct-2025191 11

grpc_artifact_centos6_x86.current_versionD22-Oct-2025191 11

grpc_artifact_protoc_aarch64.current_versionD22-Oct-2025194 11

grpc_artifact_python_linux_armv7.current_versionD22-Oct-2025198 11

grpc_artifact_python_manylinux2014_aarch64.current_versionD22-Oct-2025208 11

grpc_artifact_python_manylinux2014_x64.current_versionD22-Oct-2025204 11

grpc_artifact_python_manylinux2014_x86.current_versionD22-Oct-2025204 11

grpc_artifact_python_musllinux_1_1_x64.current_versionD22-Oct-2025204 11

grpc_artifact_python_musllinux_1_1_x86.current_versionD22-Oct-2025204 11

push_testing_images.shD22-Oct-202510.4 KiB234129

README.md

1# Docker images used for gRPC testing
2
3Most of our linux tests on the CI run under a docker container, since that makes it easier
4to maintain the test environment and the dependencies. Having an easily reproducible test
5environment also make it easier to reproduce issues we see on CI locally.
6
7The docker image definitions we use live under `tools/dockerfile` directory (with the
8exception of `third_party/rake-compiler-dock` docker images).
9
10## Version management
11
12The docker images we use for testing evolve over time (and newer/older versions of it
13might not work with newer/older revisions of our code).
14
15For each dockerfile (which is identified by the directory in which is it located),
16the "current version" that's being used by testing is determined by the
17corresponding `.current_version` file, which contains the full docker image name,
18including artifact registry location, docker image name, the current tag and the
19SHA256 image digest.
20
21Example:
22For `tools/dockerfile/test/cxx_debian11_x64/Dockerfile`, there is a
23`tools/dockerfile/test/cxx_debian11_x64.current_version` file which contains info
24as follows:
25```
26us-docker.pkg.dev/grpc-testing/testing-images-public/cxx_debian11_x64:[CURRENT_CHECKSUM]@sha256:[CURRENT_SHA256_DIGEST]
27```
28This info can be passed directly to `docker run` command to get an environment
29that's identical what what we use when testing on CI.
30
31## Updating the images
32
33The authoritative version of docker images we use for testing is stored in artifact registry,
34under the repository `us-docker.pkg.dev/grpc-testing/testing-images-public`.
35
36If you've made modifications to a dockerfile, you can upload the new version of the artifact
37registry as follows:
38
39If you haven't configured authentication in Docker for us-docker.pkg.dev previously, run:
40
41```
42gcloud auth configure-docker us-docker.pkg.dev
43gcloud auth login
44```
45
46Rebuild the docker images that have been modified locally and upload the docker images to
47artifact registry (note that this won't overwrite the "old" versions of the docker image
48that are already in artifact registry)
49
50```
51# Install qemu, binformat, and configure binfmt interpreters
52sudo apt-get install binfmt-support qemu-user-static
53
54# Enable different multi-architecture containers by QEMU with Docker
55docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
56
57tools/dockerfile/push_testing_images.sh
58```
59
60Build modified docker images locally and don't push to artifact registry. This option is
61very useful for quick local experiments. The script is much faster if it doesn't have to
62interact with artifact registry:
63
64```
65# very useful for local experiments
66LOCAL_ONLY_MODE=true tools/dockerfile/push_testing_images.sh
67```
68
69## Migrating from dockerhub
70
71In the past, our testing docker images were [hosted on dockerhub](https://hub.docker.com/u/grpctesting),
72but we are in the process of migrating them artifact registry now.
73
74This temporary feature might simplify the migration:
75
76```
77# try pull existing images from dockerhub instead of building the from scratch locally.
78TRANSFER_FROM_DOCKERHUB=true tools/dockerfile/push_testing_images.sh
79```
80