From c445fbb44ee56a847c1303864aa5fe91e2cc99b5 Mon Sep 17 00:00:00 2001 From: Samuel K Date: Sat, 18 Apr 2026 21:54:19 -0500 Subject: [PATCH 1/2] refactor(e2e): mirror test images to ghcr.io/devsy-org/test-images MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace upstream image references in E2E tests with mirrored copies under ghcr.io/devsy-org/test-images/ to avoid Docker Hub pull rate limits and ensure consistent image availability across CI runs. 5 mirrored images replace 8 upstream sources: - go:1 ← mcr devcontainers/go:1 + go:dev-1.24 - base:ubuntu ← mcr devcontainers/base:ubuntu + docker.io ubuntu - base:alpine ← mcr devcontainers/base:alpine - python:latest ← mcr devcontainers/python + docker.io python:3.14-slim - node:lts-alpine ← docker.io node:lts-alpine Includes hack/mirror-test-images.sh to refresh mirrors from upstream. --- .../Dockerfile | 2 +- e2e/tests/ide/testdata/.devcontainer.json | 2 +- .../integration/testdata/.devcontainer.json | 2 +- .../machineprovider/.devcontainer.json | 2 +- .../testdata/forward-test/.devcontainer.json | 2 +- .../testdata/gpg-forwarding/devcontainer.json | 2 +- .../ssh/testdata/local-test/devcontainer.json | 2 +- .../testdata/ssh-signing/devcontainer.json | 2 +- .../docker-compose-capadd/docker-compose.yaml | 2 +- .../docker-compose.yaml | 2 +- .../docker-compose.yaml | 2 +- .../Dockerfile | 4 +-- .../docker-compose-dockerfile-args/Dockerfile | 4 +-- .../docker-compose.yaml | 2 +- .../docker-compose.yaml | 2 +- .../docker-compose.yaml | 2 +- .../docker-compose.yaml | 2 +- .../docker-compose.yaml | 2 +- .../docker-compose.yaml | 2 +- .../docker-compose.yaml | 2 +- .../.devcontainer.json | 2 +- .../docker-compose-mounts/docker-compose.yaml | 2 +- .../docker-compose.yaml | 2 +- .../docker-compose.yaml | 2 +- .../docker-compose.yaml | 2 +- .../docker-compose.yaml | 2 +- .../docker-compose.yaml | 2 +- .../docker-compose.yaml | 2 +- .../docker-compose.yaml | 2 +- .../docker-compose.yaml | 2 +- .../docker-compose.yaml | 2 +- .../docker-compose.yaml | 2 +- .../docker-compose.yaml | 2 +- .../docker-compose.yaml | 2 +- .../Dockerfile | 2 +- .../docker-compose/docker-compose.yaml | 2 +- .../up-docker-compose/up_docker_compose.go | 4 +-- .../.devcontainer.json | 2 +- .../.devcontainer.json | 2 +- .../.devcontainer.json | 2 +- .../.devcontainer.json | 2 +- .../.devcontainer.json | 2 +- .../.devcontainer.json | 2 +- .../.devcontainer.json | 2 +- .../.devcontainer.json | 2 +- .../.devcontainer.json | 2 +- .../Dockerfile | 2 +- .../Dockerfile | 2 +- e2e/tests/up/provider_kubernetes.go | 2 +- .../.devcontainer.json | 2 +- .../docker/Dockerfile | 2 +- .../testdata/docker-mounts/.devcontainer.json | 2 +- .../.devcontainer/go/devcontainer.json | 2 +- .../.devcontainer/python/devcontainer.json | 2 +- .../.devcontainer.json | 2 +- .../.devcontainer.json | 2 +- .../docker-variables/.devcontainer.json | 2 +- .../up/testdata/docker/.devcontainer.json | 2 +- .../up/testdata/kubernetes/.devcontainer.json | 2 +- hack/mirror-test-images.sh | 28 +++++++++++++++++++ 60 files changed, 90 insertions(+), 62 deletions(-) create mode 100755 hack/mirror-test-images.sh diff --git a/e2e/tests/build/testdata/docker-compose-features-context/Dockerfile b/e2e/tests/build/testdata/docker-compose-features-context/Dockerfile index 933fb05f3..1137a4ff6 100644 --- a/e2e/tests/build/testdata/docker-compose-features-context/Dockerfile +++ b/e2e/tests/build/testdata/docker-compose-features-context/Dockerfile @@ -1,4 +1,4 @@ -FROM docker.io/library/python:3.14-slim +FROM ghcr.io/devsy-org/test-images/python:latest ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 diff --git a/e2e/tests/ide/testdata/.devcontainer.json b/e2e/tests/ide/testdata/.devcontainer.json index f8103b1ff..4b2045b16 100755 --- a/e2e/tests/ide/testdata/.devcontainer.json +++ b/e2e/tests/ide/testdata/.devcontainer.json @@ -1,6 +1,6 @@ { "name": "Python", - "image": "mcr.microsoft.com/devcontainers/python:latest", + "image": "ghcr.io/devsy-org/test-images/python:latest", "customizations": { "vscode": { diff --git a/e2e/tests/integration/testdata/.devcontainer.json b/e2e/tests/integration/testdata/.devcontainer.json index 239ee3468..25e8ab286 100755 --- a/e2e/tests/integration/testdata/.devcontainer.json +++ b/e2e/tests/integration/testdata/.devcontainer.json @@ -1,4 +1,4 @@ { "name": "Go", - "image": "mcr.microsoft.com/devcontainers/go:1" + "image": "ghcr.io/devsy-org/test-images/go:1" } diff --git a/e2e/tests/machineprovider/testdata/machineprovider/.devcontainer.json b/e2e/tests/machineprovider/testdata/machineprovider/.devcontainer.json index 239ee3468..25e8ab286 100755 --- a/e2e/tests/machineprovider/testdata/machineprovider/.devcontainer.json +++ b/e2e/tests/machineprovider/testdata/machineprovider/.devcontainer.json @@ -1,4 +1,4 @@ { "name": "Go", - "image": "mcr.microsoft.com/devcontainers/go:1" + "image": "ghcr.io/devsy-org/test-images/go:1" } diff --git a/e2e/tests/ssh/testdata/forward-test/.devcontainer.json b/e2e/tests/ssh/testdata/forward-test/.devcontainer.json index 239ee3468..25e8ab286 100755 --- a/e2e/tests/ssh/testdata/forward-test/.devcontainer.json +++ b/e2e/tests/ssh/testdata/forward-test/.devcontainer.json @@ -1,4 +1,4 @@ { "name": "Go", - "image": "mcr.microsoft.com/devcontainers/go:1" + "image": "ghcr.io/devsy-org/test-images/go:1" } diff --git a/e2e/tests/ssh/testdata/gpg-forwarding/devcontainer.json b/e2e/tests/ssh/testdata/gpg-forwarding/devcontainer.json index 239ee3468..25e8ab286 100755 --- a/e2e/tests/ssh/testdata/gpg-forwarding/devcontainer.json +++ b/e2e/tests/ssh/testdata/gpg-forwarding/devcontainer.json @@ -1,4 +1,4 @@ { "name": "Go", - "image": "mcr.microsoft.com/devcontainers/go:1" + "image": "ghcr.io/devsy-org/test-images/go:1" } diff --git a/e2e/tests/ssh/testdata/local-test/devcontainer.json b/e2e/tests/ssh/testdata/local-test/devcontainer.json index 239ee3468..25e8ab286 100755 --- a/e2e/tests/ssh/testdata/local-test/devcontainer.json +++ b/e2e/tests/ssh/testdata/local-test/devcontainer.json @@ -1,4 +1,4 @@ { "name": "Go", - "image": "mcr.microsoft.com/devcontainers/go:1" + "image": "ghcr.io/devsy-org/test-images/go:1" } diff --git a/e2e/tests/ssh/testdata/ssh-signing/devcontainer.json b/e2e/tests/ssh/testdata/ssh-signing/devcontainer.json index 0224b074c..dde294747 100644 --- a/e2e/tests/ssh/testdata/ssh-signing/devcontainer.json +++ b/e2e/tests/ssh/testdata/ssh-signing/devcontainer.json @@ -1,5 +1,5 @@ { "name": "SSH Signing Test", - "image": "mcr.microsoft.com/devcontainers/go:1", + "image": "ghcr.io/devsy-org/test-images/go:1", "forwardPorts": [8300, 7080] } diff --git a/e2e/tests/up-docker-compose/testdata/docker-compose-capadd/docker-compose.yaml b/e2e/tests/up-docker-compose/testdata/docker-compose-capadd/docker-compose.yaml index 933e2e393..43dcebf56 100644 --- a/e2e/tests/up-docker-compose/testdata/docker-compose-capadd/docker-compose.yaml +++ b/e2e/tests/up-docker-compose/testdata/docker-compose-capadd/docker-compose.yaml @@ -2,7 +2,7 @@ version: '3' services: app: - image: mcr.microsoft.com/devcontainers/go:1 + image: ghcr.io/devsy-org/test-images/go:1 command: sleep infinity volumes: - .:/workspaces:cached diff --git a/e2e/tests/up-docker-compose/testdata/docker-compose-container-env/docker-compose.yaml b/e2e/tests/up-docker-compose/testdata/docker-compose-container-env/docker-compose.yaml index 933e2e393..43dcebf56 100644 --- a/e2e/tests/up-docker-compose/testdata/docker-compose-container-env/docker-compose.yaml +++ b/e2e/tests/up-docker-compose/testdata/docker-compose-container-env/docker-compose.yaml @@ -2,7 +2,7 @@ version: '3' services: app: - image: mcr.microsoft.com/devcontainers/go:1 + image: ghcr.io/devsy-org/test-images/go:1 command: sleep infinity volumes: - .:/workspaces:cached diff --git a/e2e/tests/up-docker-compose/testdata/docker-compose-container-user/docker-compose.yaml b/e2e/tests/up-docker-compose/testdata/docker-compose-container-user/docker-compose.yaml index 933e2e393..43dcebf56 100644 --- a/e2e/tests/up-docker-compose/testdata/docker-compose-container-user/docker-compose.yaml +++ b/e2e/tests/up-docker-compose/testdata/docker-compose-container-user/docker-compose.yaml @@ -2,7 +2,7 @@ version: '3' services: app: - image: mcr.microsoft.com/devcontainers/go:1 + image: ghcr.io/devsy-org/test-images/go:1 command: sleep infinity volumes: - .:/workspaces:cached diff --git a/e2e/tests/up-docker-compose/testdata/docker-compose-dockerfile-args-multistage/Dockerfile b/e2e/tests/up-docker-compose/testdata/docker-compose-dockerfile-args-multistage/Dockerfile index e57cfb694..5b5942c05 100644 --- a/e2e/tests/up-docker-compose/testdata/docker-compose-dockerfile-args-multistage/Dockerfile +++ b/e2e/tests/up-docker-compose/testdata/docker-compose-dockerfile-args-multistage/Dockerfile @@ -1,5 +1,5 @@ -ARG BASE_IMAGE=mcr.microsoft.com/devcontainers/go -ARG BASE_VERSION=dev-1.24 +ARG BASE_IMAGE=ghcr.io/devsy-org/test-images/go +ARG BASE_VERSION=1 FROM ${BASE_IMAGE}:${BASE_VERSION} AS builder diff --git a/e2e/tests/up-docker-compose/testdata/docker-compose-dockerfile-args/Dockerfile b/e2e/tests/up-docker-compose/testdata/docker-compose-dockerfile-args/Dockerfile index 3dbacc555..5038032b9 100644 --- a/e2e/tests/up-docker-compose/testdata/docker-compose-dockerfile-args/Dockerfile +++ b/e2e/tests/up-docker-compose/testdata/docker-compose-dockerfile-args/Dockerfile @@ -1,5 +1,5 @@ -ARG BASE_IMAGE=mcr.microsoft.com/devcontainers/go -ARG BASE_VERSION=dev-1.24 +ARG BASE_IMAGE=ghcr.io/devsy-org/test-images/go +ARG BASE_VERSION=1 FROM ${BASE_IMAGE}:${BASE_VERSION} diff --git a/e2e/tests/up-docker-compose/testdata/docker-compose-env-file/docker-compose.yaml b/e2e/tests/up-docker-compose/testdata/docker-compose-env-file/docker-compose.yaml index f691e736b..71a47b92e 100644 --- a/e2e/tests/up-docker-compose/testdata/docker-compose-env-file/docker-compose.yaml +++ b/e2e/tests/up-docker-compose/testdata/docker-compose-env-file/docker-compose.yaml @@ -2,7 +2,7 @@ version: '3' services: app: - image: mcr.microsoft.com/devcontainers/go:${TAG} + image: ghcr.io/devsy-org/test-images/go:${TAG} command: sleep infinity volumes: - .:/workspaces:cached diff --git a/e2e/tests/up-docker-compose/testdata/docker-compose-extensions/docker-compose.yaml b/e2e/tests/up-docker-compose/testdata/docker-compose-extensions/docker-compose.yaml index 933e2e393..43dcebf56 100644 --- a/e2e/tests/up-docker-compose/testdata/docker-compose-extensions/docker-compose.yaml +++ b/e2e/tests/up-docker-compose/testdata/docker-compose-extensions/docker-compose.yaml @@ -2,7 +2,7 @@ version: '3' services: app: - image: mcr.microsoft.com/devcontainers/go:1 + image: ghcr.io/devsy-org/test-images/go:1 command: sleep infinity volumes: - .:/workspaces:cached diff --git a/e2e/tests/up-docker-compose/testdata/docker-compose-features/docker-compose.yaml b/e2e/tests/up-docker-compose/testdata/docker-compose-features/docker-compose.yaml index 933e2e393..43dcebf56 100644 --- a/e2e/tests/up-docker-compose/testdata/docker-compose-features/docker-compose.yaml +++ b/e2e/tests/up-docker-compose/testdata/docker-compose-features/docker-compose.yaml @@ -2,7 +2,7 @@ version: '3' services: app: - image: mcr.microsoft.com/devcontainers/go:1 + image: ghcr.io/devsy-org/test-images/go:1 command: sleep infinity volumes: - .:/workspaces:cached diff --git a/e2e/tests/up-docker-compose/testdata/docker-compose-forward-ports/docker-compose.yaml b/e2e/tests/up-docker-compose/testdata/docker-compose-forward-ports/docker-compose.yaml index 44e6f4c54..b19078229 100644 --- a/e2e/tests/up-docker-compose/testdata/docker-compose-forward-ports/docker-compose.yaml +++ b/e2e/tests/up-docker-compose/testdata/docker-compose-forward-ports/docker-compose.yaml @@ -2,7 +2,7 @@ version: '3' services: app: - image: mcr.microsoft.com/devcontainers/go:1 + image: ghcr.io/devsy-org/test-images/go:1 command: sleep infinity volumes: - .:/workspaces:cached diff --git a/e2e/tests/up-docker-compose/testdata/docker-compose-lifecycle-array/docker-compose.yaml b/e2e/tests/up-docker-compose/testdata/docker-compose-lifecycle-array/docker-compose.yaml index 933e2e393..43dcebf56 100644 --- a/e2e/tests/up-docker-compose/testdata/docker-compose-lifecycle-array/docker-compose.yaml +++ b/e2e/tests/up-docker-compose/testdata/docker-compose-lifecycle-array/docker-compose.yaml @@ -2,7 +2,7 @@ version: '3' services: app: - image: mcr.microsoft.com/devcontainers/go:1 + image: ghcr.io/devsy-org/test-images/go:1 command: sleep infinity volumes: - .:/workspaces:cached diff --git a/e2e/tests/up-docker-compose/testdata/docker-compose-lifecycle-object/docker-compose.yaml b/e2e/tests/up-docker-compose/testdata/docker-compose-lifecycle-object/docker-compose.yaml index 933e2e393..43dcebf56 100644 --- a/e2e/tests/up-docker-compose/testdata/docker-compose-lifecycle-object/docker-compose.yaml +++ b/e2e/tests/up-docker-compose/testdata/docker-compose-lifecycle-object/docker-compose.yaml @@ -2,7 +2,7 @@ version: '3' services: app: - image: mcr.microsoft.com/devcontainers/go:1 + image: ghcr.io/devsy-org/test-images/go:1 command: sleep infinity volumes: - .:/workspaces:cached diff --git a/e2e/tests/up-docker-compose/testdata/docker-compose-lifecycle-quotes/docker-compose.yaml b/e2e/tests/up-docker-compose/testdata/docker-compose-lifecycle-quotes/docker-compose.yaml index 933e2e393..43dcebf56 100644 --- a/e2e/tests/up-docker-compose/testdata/docker-compose-lifecycle-quotes/docker-compose.yaml +++ b/e2e/tests/up-docker-compose/testdata/docker-compose-lifecycle-quotes/docker-compose.yaml @@ -2,7 +2,7 @@ version: '3' services: app: - image: mcr.microsoft.com/devcontainers/go:1 + image: ghcr.io/devsy-org/test-images/go:1 command: sleep infinity volumes: - .:/workspaces:cached diff --git a/e2e/tests/up-docker-compose/testdata/docker-compose-lookup-user/.devcontainer.json b/e2e/tests/up-docker-compose/testdata/docker-compose-lookup-user/.devcontainer.json index 2e74089be..15ef0cdef 100644 --- a/e2e/tests/up-docker-compose/testdata/docker-compose-lookup-user/.devcontainer.json +++ b/e2e/tests/up-docker-compose/testdata/docker-compose-lookup-user/.devcontainer.json @@ -1,4 +1,4 @@ { "name": "Node.js", - "image": "docker.io/library/node:lts-alpine" + "image": "ghcr.io/devsy-org/test-images/node:lts-alpine" } diff --git a/e2e/tests/up-docker-compose/testdata/docker-compose-mounts/docker-compose.yaml b/e2e/tests/up-docker-compose/testdata/docker-compose-mounts/docker-compose.yaml index 933e2e393..43dcebf56 100644 --- a/e2e/tests/up-docker-compose/testdata/docker-compose-mounts/docker-compose.yaml +++ b/e2e/tests/up-docker-compose/testdata/docker-compose-mounts/docker-compose.yaml @@ -2,7 +2,7 @@ version: '3' services: app: - image: mcr.microsoft.com/devcontainers/go:1 + image: ghcr.io/devsy-org/test-images/go:1 command: sleep infinity volumes: - .:/workspaces:cached diff --git a/e2e/tests/up-docker-compose/testdata/docker-compose-multiple-services/docker-compose.yaml b/e2e/tests/up-docker-compose/testdata/docker-compose-multiple-services/docker-compose.yaml index 14745e2c2..24c1f3b11 100644 --- a/e2e/tests/up-docker-compose/testdata/docker-compose-multiple-services/docker-compose.yaml +++ b/e2e/tests/up-docker-compose/testdata/docker-compose-multiple-services/docker-compose.yaml @@ -2,7 +2,7 @@ version: '3' services: app: - image: mcr.microsoft.com/devcontainers/go:1 + image: ghcr.io/devsy-org/test-images/go:1 command: sleep infinity volumes: - .:/workspaces:cached diff --git a/e2e/tests/up-docker-compose/testdata/docker-compose-override-command/docker-compose.yaml b/e2e/tests/up-docker-compose/testdata/docker-compose-override-command/docker-compose.yaml index fe0d57a23..7db35a5fc 100644 --- a/e2e/tests/up-docker-compose/testdata/docker-compose-override-command/docker-compose.yaml +++ b/e2e/tests/up-docker-compose/testdata/docker-compose-override-command/docker-compose.yaml @@ -2,7 +2,7 @@ version: '3' services: app: - image: mcr.microsoft.com/devcontainers/go:1 + image: ghcr.io/devsy-org/test-images/go:1 command: bash volumes: - .:/workspaces:cached diff --git a/e2e/tests/up-docker-compose/testdata/docker-compose-overrides/docker-compose.yaml b/e2e/tests/up-docker-compose/testdata/docker-compose-overrides/docker-compose.yaml index fd9ec169c..3f7c2808a 100644 --- a/e2e/tests/up-docker-compose/testdata/docker-compose-overrides/docker-compose.yaml +++ b/e2e/tests/up-docker-compose/testdata/docker-compose-overrides/docker-compose.yaml @@ -2,6 +2,6 @@ version: '3' services: app: - image: mcr.microsoft.com/devcontainers/go:1 + image: ghcr.io/devsy-org/test-images/go:1 volumes: - .:/workspaces:cached diff --git a/e2e/tests/up-docker-compose/testdata/docker-compose-privileged/docker-compose.yaml b/e2e/tests/up-docker-compose/testdata/docker-compose-privileged/docker-compose.yaml index 933e2e393..43dcebf56 100644 --- a/e2e/tests/up-docker-compose/testdata/docker-compose-privileged/docker-compose.yaml +++ b/e2e/tests/up-docker-compose/testdata/docker-compose-privileged/docker-compose.yaml @@ -2,7 +2,7 @@ version: '3' services: app: - image: mcr.microsoft.com/devcontainers/go:1 + image: ghcr.io/devsy-org/test-images/go:1 command: sleep infinity volumes: - .:/workspaces:cached diff --git a/e2e/tests/up-docker-compose/testdata/docker-compose-rebuild-fail/docker-compose.yaml b/e2e/tests/up-docker-compose/testdata/docker-compose-rebuild-fail/docker-compose.yaml index 933e2e393..43dcebf56 100644 --- a/e2e/tests/up-docker-compose/testdata/docker-compose-rebuild-fail/docker-compose.yaml +++ b/e2e/tests/up-docker-compose/testdata/docker-compose-rebuild-fail/docker-compose.yaml @@ -2,7 +2,7 @@ version: '3' services: app: - image: mcr.microsoft.com/devcontainers/go:1 + image: ghcr.io/devsy-org/test-images/go:1 command: sleep infinity volumes: - .:/workspaces:cached diff --git a/e2e/tests/up-docker-compose/testdata/docker-compose-rebuild-success/docker-compose.yaml b/e2e/tests/up-docker-compose/testdata/docker-compose-rebuild-success/docker-compose.yaml index 933e2e393..43dcebf56 100644 --- a/e2e/tests/up-docker-compose/testdata/docker-compose-rebuild-success/docker-compose.yaml +++ b/e2e/tests/up-docker-compose/testdata/docker-compose-rebuild-success/docker-compose.yaml @@ -2,7 +2,7 @@ version: '3' services: app: - image: mcr.microsoft.com/devcontainers/go:1 + image: ghcr.io/devsy-org/test-images/go:1 command: sleep infinity volumes: - .:/workspaces:cached diff --git a/e2e/tests/up-docker-compose/testdata/docker-compose-remote-env/docker-compose.yaml b/e2e/tests/up-docker-compose/testdata/docker-compose-remote-env/docker-compose.yaml index 933e2e393..43dcebf56 100644 --- a/e2e/tests/up-docker-compose/testdata/docker-compose-remote-env/docker-compose.yaml +++ b/e2e/tests/up-docker-compose/testdata/docker-compose-remote-env/docker-compose.yaml @@ -2,7 +2,7 @@ version: '3' services: app: - image: mcr.microsoft.com/devcontainers/go:1 + image: ghcr.io/devsy-org/test-images/go:1 command: sleep infinity volumes: - .:/workspaces:cached diff --git a/e2e/tests/up-docker-compose/testdata/docker-compose-remote-user/docker-compose.yaml b/e2e/tests/up-docker-compose/testdata/docker-compose-remote-user/docker-compose.yaml index 933e2e393..43dcebf56 100644 --- a/e2e/tests/up-docker-compose/testdata/docker-compose-remote-user/docker-compose.yaml +++ b/e2e/tests/up-docker-compose/testdata/docker-compose-remote-user/docker-compose.yaml @@ -2,7 +2,7 @@ version: '3' services: app: - image: mcr.microsoft.com/devcontainers/go:1 + image: ghcr.io/devsy-org/test-images/go:1 command: sleep infinity volumes: - .:/workspaces:cached diff --git a/e2e/tests/up-docker-compose/testdata/docker-compose-run-services/docker-compose.yaml b/e2e/tests/up-docker-compose/testdata/docker-compose-run-services/docker-compose.yaml index 14745e2c2..24c1f3b11 100644 --- a/e2e/tests/up-docker-compose/testdata/docker-compose-run-services/docker-compose.yaml +++ b/e2e/tests/up-docker-compose/testdata/docker-compose-run-services/docker-compose.yaml @@ -2,7 +2,7 @@ version: '3' services: app: - image: mcr.microsoft.com/devcontainers/go:1 + image: ghcr.io/devsy-org/test-images/go:1 command: sleep infinity volumes: - .:/workspaces:cached diff --git a/e2e/tests/up-docker-compose/testdata/docker-compose-securityOpt/docker-compose.yaml b/e2e/tests/up-docker-compose/testdata/docker-compose-securityOpt/docker-compose.yaml index 933e2e393..43dcebf56 100644 --- a/e2e/tests/up-docker-compose/testdata/docker-compose-securityOpt/docker-compose.yaml +++ b/e2e/tests/up-docker-compose/testdata/docker-compose-securityOpt/docker-compose.yaml @@ -2,7 +2,7 @@ version: '3' services: app: - image: mcr.microsoft.com/devcontainers/go:1 + image: ghcr.io/devsy-org/test-images/go:1 command: sleep infinity volumes: - .:/workspaces:cached diff --git a/e2e/tests/up-docker-compose/testdata/docker-compose-subfolder/docker-compose.yaml b/e2e/tests/up-docker-compose/testdata/docker-compose-subfolder/docker-compose.yaml index 933e2e393..43dcebf56 100644 --- a/e2e/tests/up-docker-compose/testdata/docker-compose-subfolder/docker-compose.yaml +++ b/e2e/tests/up-docker-compose/testdata/docker-compose-subfolder/docker-compose.yaml @@ -2,7 +2,7 @@ version: '3' services: app: - image: mcr.microsoft.com/devcontainers/go:1 + image: ghcr.io/devsy-org/test-images/go:1 command: sleep infinity volumes: - .:/workspaces:cached diff --git a/e2e/tests/up-docker-compose/testdata/docker-compose-variables/docker-compose.yaml b/e2e/tests/up-docker-compose/testdata/docker-compose-variables/docker-compose.yaml index 933e2e393..43dcebf56 100644 --- a/e2e/tests/up-docker-compose/testdata/docker-compose-variables/docker-compose.yaml +++ b/e2e/tests/up-docker-compose/testdata/docker-compose-variables/docker-compose.yaml @@ -2,7 +2,7 @@ version: '3' services: app: - image: mcr.microsoft.com/devcontainers/go:1 + image: ghcr.io/devsy-org/test-images/go:1 command: sleep infinity volumes: - .:/workspaces:cached diff --git a/e2e/tests/up-docker-compose/testdata/docker-compose-with-multi-stage-build/Dockerfile b/e2e/tests/up-docker-compose/testdata/docker-compose-with-multi-stage-build/Dockerfile index 98cefaa93..49aa5da33 100644 --- a/e2e/tests/up-docker-compose/testdata/docker-compose-with-multi-stage-build/Dockerfile +++ b/e2e/tests/up-docker-compose/testdata/docker-compose-with-multi-stage-build/Dockerfile @@ -1,4 +1,4 @@ -FROM mcr.microsoft.com/devcontainers/go:1 AS base +FROM ghcr.io/devsy-org/test-images/go:1 AS base RUN apt-get update && apt-get install -y vim diff --git a/e2e/tests/up-docker-compose/testdata/docker-compose/docker-compose.yaml b/e2e/tests/up-docker-compose/testdata/docker-compose/docker-compose.yaml index 933e2e393..43dcebf56 100644 --- a/e2e/tests/up-docker-compose/testdata/docker-compose/docker-compose.yaml +++ b/e2e/tests/up-docker-compose/testdata/docker-compose/docker-compose.yaml @@ -2,7 +2,7 @@ version: '3' services: app: - image: mcr.microsoft.com/devcontainers/go:1 + image: ghcr.io/devsy-org/test-images/go:1 command: sleep infinity volumes: - .:/workspaces:cached diff --git a/e2e/tests/up-docker-compose/up_docker_compose.go b/e2e/tests/up-docker-compose/up_docker_compose.go index 47f15e922..0b06a9ff5 100644 --- a/e2e/tests/up-docker-compose/up_docker_compose.go +++ b/e2e/tests/up-docker-compose/up_docker_compose.go @@ -498,7 +498,7 @@ var _ = ginkgo.Describe( buildArgs, err := tc.execSSH(ctx, tempDir, "cat /build-args.txt") framework.ExpectNoError(err) gomega.Expect(strings.TrimSpace(buildArgs)). - To(gomega.Equal("mcr.microsoft.com/devcontainers/go:dev-1.24")) + To(gomega.Equal("ghcr.io/devsy-org/test-images/go:1")) }, ginkgo.SpecTimeout(framework.GetTimeout())) ginkgo.It("multi-stage dockerfile with args", func(ctx context.Context) { @@ -522,7 +522,7 @@ var _ = ginkgo.Describe( buildArgs, err := tc.execSSH(ctx, tempDir, "cat /build-args.txt") framework.ExpectNoError(err) gomega.Expect(strings.TrimSpace(buildArgs)). - To(gomega.Equal("mcr.microsoft.com/devcontainers/go:dev-1.24")) + To(gomega.Equal("ghcr.io/devsy-org/test-images/go:1")) }, ginkgo.SpecTimeout(framework.GetTimeout())) }, ) diff --git a/e2e/tests/up-features/testdata/docker-features-circular-depends-on/.devcontainer.json b/e2e/tests/up-features/testdata/docker-features-circular-depends-on/.devcontainer.json index 3a8f812a9..baa7636d3 100644 --- a/e2e/tests/up-features/testdata/docker-features-circular-depends-on/.devcontainer.json +++ b/e2e/tests/up-features/testdata/docker-features-circular-depends-on/.devcontainer.json @@ -1,5 +1,5 @@ { - "image": "mcr.microsoft.com/devcontainers/base:alpine", + "image": "ghcr.io/devsy-org/test-images/base:alpine", "features": { "./features/featureA": {} } diff --git a/e2e/tests/up-features/testdata/docker-features-depends-on-duplicate-feature/.devcontainer.json b/e2e/tests/up-features/testdata/docker-features-depends-on-duplicate-feature/.devcontainer.json index 7a6469013..f53cc0e45 100644 --- a/e2e/tests/up-features/testdata/docker-features-depends-on-duplicate-feature/.devcontainer.json +++ b/e2e/tests/up-features/testdata/docker-features-depends-on-duplicate-feature/.devcontainer.json @@ -1,5 +1,5 @@ { - "image": "mcr.microsoft.com/devcontainers/base:ubuntu", + "image": "ghcr.io/devsy-org/test-images/base:ubuntu", "features": { "./features/dependsOnDemo": {}, "ghcr.io/devcontainers/features/node:1": {} diff --git a/e2e/tests/up-features/testdata/docker-features-depends-on-options/.devcontainer.json b/e2e/tests/up-features/testdata/docker-features-depends-on-options/.devcontainer.json index b5bf2d1f2..370c97173 100644 --- a/e2e/tests/up-features/testdata/docker-features-depends-on-options/.devcontainer.json +++ b/e2e/tests/up-features/testdata/docker-features-depends-on-options/.devcontainer.json @@ -1,5 +1,5 @@ { - "image": "mcr.microsoft.com/devcontainers/base:alpine", + "image": "ghcr.io/devsy-org/test-images/base:alpine", "features": { "./features/customGreeting": {} } diff --git a/e2e/tests/up-features/testdata/docker-features-depends-on/.devcontainer.json b/e2e/tests/up-features/testdata/docker-features-depends-on/.devcontainer.json index fc8e65b9b..1867d15f2 100644 --- a/e2e/tests/up-features/testdata/docker-features-depends-on/.devcontainer.json +++ b/e2e/tests/up-features/testdata/docker-features-depends-on/.devcontainer.json @@ -1,5 +1,5 @@ { - "image": "mcr.microsoft.com/devcontainers/base:alpine", + "image": "ghcr.io/devsy-org/test-images/base:alpine", "features": { "./features/dependsOnDemo": {} } diff --git a/e2e/tests/up-features/testdata/docker-features-mixed-dependencies/.devcontainer.json b/e2e/tests/up-features/testdata/docker-features-mixed-dependencies/.devcontainer.json index 682526ae6..03e49aa57 100644 --- a/e2e/tests/up-features/testdata/docker-features-mixed-dependencies/.devcontainer.json +++ b/e2e/tests/up-features/testdata/docker-features-mixed-dependencies/.devcontainer.json @@ -1,5 +1,5 @@ { - "image": "mcr.microsoft.com/devcontainers/base:alpine", + "image": "ghcr.io/devsy-org/test-images/base:alpine", "features": { "./features/mixedDeps": {}, "ghcr.io/devcontainers/feature-starter/hello:1": {} diff --git a/e2e/tests/up-features/testdata/docker-features-nested-depends-on/.devcontainer.json b/e2e/tests/up-features/testdata/docker-features-nested-depends-on/.devcontainer.json index f8e0fec04..cfe569093 100644 --- a/e2e/tests/up-features/testdata/docker-features-nested-depends-on/.devcontainer.json +++ b/e2e/tests/up-features/testdata/docker-features-nested-depends-on/.devcontainer.json @@ -1,5 +1,5 @@ { - "image": "mcr.microsoft.com/devcontainers/base:alpine", + "image": "ghcr.io/devsy-org/test-images/base:alpine", "features": { "./features/topLevel": {} } diff --git a/e2e/tests/up-features/testdata/docker-features-nonexistent-dependency/.devcontainer.json b/e2e/tests/up-features/testdata/docker-features-nonexistent-dependency/.devcontainer.json index 15594b8ea..bb1c68517 100644 --- a/e2e/tests/up-features/testdata/docker-features-nonexistent-dependency/.devcontainer.json +++ b/e2e/tests/up-features/testdata/docker-features-nonexistent-dependency/.devcontainer.json @@ -1,5 +1,5 @@ { - "image": "mcr.microsoft.com/devcontainers/base:alpine", + "image": "ghcr.io/devsy-org/test-images/base:alpine", "features": { "./features/needsMissing": {} } diff --git a/e2e/tests/up-features/testdata/docker-features-self-dependency/.devcontainer.json b/e2e/tests/up-features/testdata/docker-features-self-dependency/.devcontainer.json index ee4bfe93c..5d1e271fb 100644 --- a/e2e/tests/up-features/testdata/docker-features-self-dependency/.devcontainer.json +++ b/e2e/tests/up-features/testdata/docker-features-self-dependency/.devcontainer.json @@ -1,5 +1,5 @@ { - "image": "mcr.microsoft.com/devcontainers/base:alpine", + "image": "ghcr.io/devsy-org/test-images/base:alpine", "features": { "./features/selfDep": {} } diff --git a/e2e/tests/up-features/testdata/docker-features-shared-dependency/.devcontainer.json b/e2e/tests/up-features/testdata/docker-features-shared-dependency/.devcontainer.json index 3ee48657f..2794f17dc 100644 --- a/e2e/tests/up-features/testdata/docker-features-shared-dependency/.devcontainer.json +++ b/e2e/tests/up-features/testdata/docker-features-shared-dependency/.devcontainer.json @@ -1,5 +1,5 @@ { - "image": "mcr.microsoft.com/devcontainers/base:alpine", + "image": "ghcr.io/devsy-org/test-images/base:alpine", "features": { "./features/featureA": {}, "./features/featureB": {} diff --git a/e2e/tests/up-features/testdata/docker-features-with-user-variable-in-dockerfile/Dockerfile b/e2e/tests/up-features/testdata/docker-features-with-user-variable-in-dockerfile/Dockerfile index 2e1fde1f6..96f046d9b 100644 --- a/e2e/tests/up-features/testdata/docker-features-with-user-variable-in-dockerfile/Dockerfile +++ b/e2e/tests/up-features/testdata/docker-features-with-user-variable-in-dockerfile/Dockerfile @@ -1,4 +1,4 @@ -FROM docker.io/library/ubuntu:latest +FROM ghcr.io/devsy-org/test-images/base:ubuntu ARG USERNAME=ubuntu RUN useradd -m ${USERNAME} diff --git a/e2e/tests/up-features/testdata/docker-features-with-user-variable/Dockerfile b/e2e/tests/up-features/testdata/docker-features-with-user-variable/Dockerfile index efe3e782d..655554bf7 100644 --- a/e2e/tests/up-features/testdata/docker-features-with-user-variable/Dockerfile +++ b/e2e/tests/up-features/testdata/docker-features-with-user-variable/Dockerfile @@ -1,3 +1,3 @@ -FROM docker.io/library/ubuntu:latest +FROM ghcr.io/devsy-org/test-images/base:ubuntu USER ${USERNAME:-ubuntu} diff --git a/e2e/tests/up/provider_kubernetes.go b/e2e/tests/up/provider_kubernetes.go index eca32a33b..4711d1f33 100644 --- a/e2e/tests/up/provider_kubernetes.go +++ b/e2e/tests/up/provider_kubernetes.go @@ -79,7 +79,7 @@ var _ = ginkgo.Describe( framework.ExpectEqual(len(list.Items[0].Spec.Containers), 1, "Expect 1 container") framework.ExpectEqual( list.Items[0].Spec.Containers[0].Image, - "mcr.microsoft.com/devcontainers/go:1", + "ghcr.io/devsy-org/test-images/go:1", "Expect container image", ) diff --git a/e2e/tests/up/testdata/docker-invalid-bind-mount/.devcontainer.json b/e2e/tests/up/testdata/docker-invalid-bind-mount/.devcontainer.json index 25efbd36c..fc4273abc 100644 --- a/e2e/tests/up/testdata/docker-invalid-bind-mount/.devcontainer.json +++ b/e2e/tests/up/testdata/docker-invalid-bind-mount/.devcontainer.json @@ -1,5 +1,5 @@ { "name": "Test Bind Mount Validation", - "image": "mcr.microsoft.com/devcontainers/base:alpine", + "image": "ghcr.io/devsy-org/test-images/base:alpine", "mounts": ["source=/nonexistent/path,target=/mnt/test,type=bind"] } diff --git a/e2e/tests/up/testdata/docker-localworkspacefolder/docker/Dockerfile b/e2e/tests/up/testdata/docker-localworkspacefolder/docker/Dockerfile index b373895ed..657c20f61 100644 --- a/e2e/tests/up/testdata/docker-localworkspacefolder/docker/Dockerfile +++ b/e2e/tests/up/testdata/docker-localworkspacefolder/docker/Dockerfile @@ -1,3 +1,3 @@ -FROM mcr.microsoft.com/devcontainers/base:ubuntu +FROM ghcr.io/devsy-org/test-images/base:ubuntu RUN echo "Testing localWorkspaceFolder dockerfile resolution" diff --git a/e2e/tests/up/testdata/docker-mounts/.devcontainer.json b/e2e/tests/up/testdata/docker-mounts/.devcontainer.json index 9924389c7..97d37d85e 100755 --- a/e2e/tests/up/testdata/docker-mounts/.devcontainer.json +++ b/e2e/tests/up/testdata/docker-mounts/.devcontainer.json @@ -1,6 +1,6 @@ { "name": "Go", - "image": "mcr.microsoft.com/devcontainers/go:1", + "image": "ghcr.io/devsy-org/test-images/go:1", "mounts": [ { "type": "bind", diff --git a/e2e/tests/up/testdata/docker-multi-devcontainer/.devcontainer/go/devcontainer.json b/e2e/tests/up/testdata/docker-multi-devcontainer/.devcontainer/go/devcontainer.json index 944afaf22..294e492b5 100644 --- a/e2e/tests/up/testdata/docker-multi-devcontainer/.devcontainer/go/devcontainer.json +++ b/e2e/tests/up/testdata/docker-multi-devcontainer/.devcontainer/go/devcontainer.json @@ -1,6 +1,6 @@ { "name": "Go DevContainer", - "image": "mcr.microsoft.com/devcontainers/go:1", + "image": "ghcr.io/devsy-org/test-images/go:1", "remoteEnv": { "DEVCONTAINER_TYPE": "go" } diff --git a/e2e/tests/up/testdata/docker-multi-devcontainer/.devcontainer/python/devcontainer.json b/e2e/tests/up/testdata/docker-multi-devcontainer/.devcontainer/python/devcontainer.json index f8f3fb567..504f8fd03 100644 --- a/e2e/tests/up/testdata/docker-multi-devcontainer/.devcontainer/python/devcontainer.json +++ b/e2e/tests/up/testdata/docker-multi-devcontainer/.devcontainer/python/devcontainer.json @@ -1,6 +1,6 @@ { "name": "Python DevContainer", - "image": "mcr.microsoft.com/devcontainers/python:latest", + "image": "ghcr.io/devsy-org/test-images/python:latest", "remoteEnv": { "DEVCONTAINER_TYPE": "python" } diff --git a/e2e/tests/up/testdata/docker-post-attach-nonblocking/.devcontainer.json b/e2e/tests/up/testdata/docker-post-attach-nonblocking/.devcontainer.json index 26efeea26..04dc2ca52 100644 --- a/e2e/tests/up/testdata/docker-post-attach-nonblocking/.devcontainer.json +++ b/e2e/tests/up/testdata/docker-post-attach-nonblocking/.devcontainer.json @@ -1,5 +1,5 @@ { - "image": "mcr.microsoft.com/devcontainers/go:1", + "image": "ghcr.io/devsy-org/test-images/go:1", "postStartCommand": "echo postStartDone > $HOME/post-start.out", "postAttachCommand": "sleep 15 && echo postAttachDone > $HOME/post-attach.out" } diff --git a/e2e/tests/up/testdata/docker-post-start-restart/.devcontainer.json b/e2e/tests/up/testdata/docker-post-start-restart/.devcontainer.json index 011298d35..9a6b57bd9 100644 --- a/e2e/tests/up/testdata/docker-post-start-restart/.devcontainer.json +++ b/e2e/tests/up/testdata/docker-post-start-restart/.devcontainer.json @@ -1,4 +1,4 @@ { - "image": "mcr.microsoft.com/devcontainers/go:1", + "image": "ghcr.io/devsy-org/test-images/go:1", "postStartCommand": "echo postStartRan >> $HOME/post-start-count.log" } diff --git a/e2e/tests/up/testdata/docker-variables/.devcontainer.json b/e2e/tests/up/testdata/docker-variables/.devcontainer.json index 7f48147a9..bafd1da2b 100755 --- a/e2e/tests/up/testdata/docker-variables/.devcontainer.json +++ b/e2e/tests/up/testdata/docker-variables/.devcontainer.json @@ -1,6 +1,6 @@ { "name": "Go", - "image": "mcr.microsoft.com/devcontainers/go:1", + "image": "ghcr.io/devsy-org/test-images/go:1", "remoteEnv": { "FOO": "BAR", "LOCAL_ENV_HOME": "${localEnv:HOME}", diff --git a/e2e/tests/up/testdata/docker/.devcontainer.json b/e2e/tests/up/testdata/docker/.devcontainer.json index 239ee3468..25e8ab286 100755 --- a/e2e/tests/up/testdata/docker/.devcontainer.json +++ b/e2e/tests/up/testdata/docker/.devcontainer.json @@ -1,4 +1,4 @@ { "name": "Go", - "image": "mcr.microsoft.com/devcontainers/go:1" + "image": "ghcr.io/devsy-org/test-images/go:1" } diff --git a/e2e/tests/up/testdata/kubernetes/.devcontainer.json b/e2e/tests/up/testdata/kubernetes/.devcontainer.json index 239ee3468..25e8ab286 100755 --- a/e2e/tests/up/testdata/kubernetes/.devcontainer.json +++ b/e2e/tests/up/testdata/kubernetes/.devcontainer.json @@ -1,4 +1,4 @@ { "name": "Go", - "image": "mcr.microsoft.com/devcontainers/go:1" + "image": "ghcr.io/devsy-org/test-images/go:1" } diff --git a/hack/mirror-test-images.sh b/hack/mirror-test-images.sh new file mode 100755 index 000000000..29c2860aa --- /dev/null +++ b/hack/mirror-test-images.sh @@ -0,0 +1,28 @@ +#!/usr/bin/env bash +# Mirror upstream test images to ghcr.io/devsy-org/test-images/ +# to avoid pull rate limits and ensure consistency across CI. +# +# Prerequisites: +# echo $GHCR_TOKEN | docker login ghcr.io -u USERNAME --password-stdin +# +set -euo pipefail + +REGISTRY="ghcr.io/devsy-org/test-images" + +declare -A IMAGES=( + ["mcr.microsoft.com/devcontainers/go:1"]="${REGISTRY}/go:1" + ["mcr.microsoft.com/devcontainers/base:ubuntu"]="${REGISTRY}/base:ubuntu" + ["mcr.microsoft.com/devcontainers/base:alpine"]="${REGISTRY}/base:alpine" + ["mcr.microsoft.com/devcontainers/python:latest"]="${REGISTRY}/python:latest" + ["docker.io/library/node:lts-alpine"]="${REGISTRY}/node:lts-alpine" +) + +for src in "${!IMAGES[@]}"; do + dst="${IMAGES[$src]}" + echo "==> Mirroring ${src} -> ${dst}" + docker pull "${src}" + docker tag "${src}" "${dst}" + docker push "${dst}" +done + +echo "Done. All test images mirrored to ${REGISTRY}/" From 279092b48c6b4a626a98b8882951fab0c865d819 Mon Sep 17 00:00:00 2001 From: Samuel K Date: Sat, 18 Apr 2026 21:56:31 -0500 Subject: [PATCH 2/2] remove mirror script from repo --- hack/mirror-test-images.sh | 28 ---------------------------- 1 file changed, 28 deletions(-) delete mode 100755 hack/mirror-test-images.sh diff --git a/hack/mirror-test-images.sh b/hack/mirror-test-images.sh deleted file mode 100755 index 29c2860aa..000000000 --- a/hack/mirror-test-images.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/env bash -# Mirror upstream test images to ghcr.io/devsy-org/test-images/ -# to avoid pull rate limits and ensure consistency across CI. -# -# Prerequisites: -# echo $GHCR_TOKEN | docker login ghcr.io -u USERNAME --password-stdin -# -set -euo pipefail - -REGISTRY="ghcr.io/devsy-org/test-images" - -declare -A IMAGES=( - ["mcr.microsoft.com/devcontainers/go:1"]="${REGISTRY}/go:1" - ["mcr.microsoft.com/devcontainers/base:ubuntu"]="${REGISTRY}/base:ubuntu" - ["mcr.microsoft.com/devcontainers/base:alpine"]="${REGISTRY}/base:alpine" - ["mcr.microsoft.com/devcontainers/python:latest"]="${REGISTRY}/python:latest" - ["docker.io/library/node:lts-alpine"]="${REGISTRY}/node:lts-alpine" -) - -for src in "${!IMAGES[@]}"; do - dst="${IMAGES[$src]}" - echo "==> Mirroring ${src} -> ${dst}" - docker pull "${src}" - docker tag "${src}" "${dst}" - docker push "${dst}" -done - -echo "Done. All test images mirrored to ${REGISTRY}/"