From 2b908e58de6bbd2a577a59509973bcda4b1b72e9 Mon Sep 17 00:00:00 2001 From: "Philip K. Warren" Date: Thu, 4 Jun 2026 09:47:15 -0500 Subject: [PATCH] Move docker base images Dependabot has been failing the last few weeks to update the base images with dependabot (thought to be because they're in the `.github` directory). Move them out into a new top-level `baseimages` directory to see if dependabot will work again. --- .github/dependabot.yml | 2 +- CONTRIBUTING.md | 4 ++-- .../docker => baseimages}/Dockerfile.dart | 0 .../docker => baseimages}/Dockerfile.debian | 0 .../Dockerfile.distroless-base-debian | 0 .../Dockerfile.distroless-cc-debian | 0 .../Dockerfile.distroless-java-debian | 0 .../Dockerfile.distroless-nodejs-debian | 0 .../Dockerfile.distroless-python-debian | 0 .../Dockerfile.distroless-static-debian | 0 .../Dockerfile.dockerfile | 0 .../Dockerfile.dotnetrestore | 0 .../docker => baseimages}/Dockerfile.golang | 0 .../docker => baseimages}/Dockerfile.node | 0 .../docker => baseimages}/Dockerfile.python | 0 .../docker => baseimages}/Dockerfile.rust | 0 .../docker => baseimages}/Dockerfile.swift | 0 internal/cmd/fetcher/main_test.go | 4 ++-- internal/docker/baseimage.go | 20 +++++++++---------- internal/docker/baseimage_test.go | 5 ++--- 20 files changed, 17 insertions(+), 18 deletions(-) rename {.github/docker => baseimages}/Dockerfile.dart (100%) rename {.github/docker => baseimages}/Dockerfile.debian (100%) rename {.github/docker => baseimages}/Dockerfile.distroless-base-debian (100%) rename {.github/docker => baseimages}/Dockerfile.distroless-cc-debian (100%) rename {.github/docker => baseimages}/Dockerfile.distroless-java-debian (100%) rename {.github/docker => baseimages}/Dockerfile.distroless-nodejs-debian (100%) rename {.github/docker => baseimages}/Dockerfile.distroless-python-debian (100%) rename {.github/docker => baseimages}/Dockerfile.distroless-static-debian (100%) rename {.github/docker => baseimages}/Dockerfile.dockerfile (100%) rename {.github/docker => baseimages}/Dockerfile.dotnetrestore (100%) rename {.github/docker => baseimages}/Dockerfile.golang (100%) rename {.github/docker => baseimages}/Dockerfile.node (100%) rename {.github/docker => baseimages}/Dockerfile.python (100%) rename {.github/docker => baseimages}/Dockerfile.rust (100%) rename {.github/docker => baseimages}/Dockerfile.swift (100%) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index f8244b9ed..b446a6d62 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -21,7 +21,7 @@ updates: - "*" # plugin base images - package-ecosystem: "docker" - directory: "/.github/docker" + directory: "/baseimages" schedule: interval: "daily" registries: diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f0b28b9eb..f6b6b0769 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -236,9 +236,9 @@ If the `fetcher` command opens a PR for a new version of an existing plugin, mos ### Updating Docker Base Images -Docker base images are tracked in [.github/docker](.github/docker) and kept updated with Dependabot. +Docker base images are tracked in [baseimages](baseimages) and kept updated with Dependabot. When new versions of a plugin are detected, they'll automatically be built with the latest base images. -When creating a new plugin, ensure that it starts with the latest version of the base image in the `.github/docker` directory. +When creating a new plugin, ensure that it starts with the latest version of the base image in the `baseimages` directory. ## Local Testing diff --git a/.github/docker/Dockerfile.dart b/baseimages/Dockerfile.dart similarity index 100% rename from .github/docker/Dockerfile.dart rename to baseimages/Dockerfile.dart diff --git a/.github/docker/Dockerfile.debian b/baseimages/Dockerfile.debian similarity index 100% rename from .github/docker/Dockerfile.debian rename to baseimages/Dockerfile.debian diff --git a/.github/docker/Dockerfile.distroless-base-debian b/baseimages/Dockerfile.distroless-base-debian similarity index 100% rename from .github/docker/Dockerfile.distroless-base-debian rename to baseimages/Dockerfile.distroless-base-debian diff --git a/.github/docker/Dockerfile.distroless-cc-debian b/baseimages/Dockerfile.distroless-cc-debian similarity index 100% rename from .github/docker/Dockerfile.distroless-cc-debian rename to baseimages/Dockerfile.distroless-cc-debian diff --git a/.github/docker/Dockerfile.distroless-java-debian b/baseimages/Dockerfile.distroless-java-debian similarity index 100% rename from .github/docker/Dockerfile.distroless-java-debian rename to baseimages/Dockerfile.distroless-java-debian diff --git a/.github/docker/Dockerfile.distroless-nodejs-debian b/baseimages/Dockerfile.distroless-nodejs-debian similarity index 100% rename from .github/docker/Dockerfile.distroless-nodejs-debian rename to baseimages/Dockerfile.distroless-nodejs-debian diff --git a/.github/docker/Dockerfile.distroless-python-debian b/baseimages/Dockerfile.distroless-python-debian similarity index 100% rename from .github/docker/Dockerfile.distroless-python-debian rename to baseimages/Dockerfile.distroless-python-debian diff --git a/.github/docker/Dockerfile.distroless-static-debian b/baseimages/Dockerfile.distroless-static-debian similarity index 100% rename from .github/docker/Dockerfile.distroless-static-debian rename to baseimages/Dockerfile.distroless-static-debian diff --git a/.github/docker/Dockerfile.dockerfile b/baseimages/Dockerfile.dockerfile similarity index 100% rename from .github/docker/Dockerfile.dockerfile rename to baseimages/Dockerfile.dockerfile diff --git a/.github/docker/Dockerfile.dotnetrestore b/baseimages/Dockerfile.dotnetrestore similarity index 100% rename from .github/docker/Dockerfile.dotnetrestore rename to baseimages/Dockerfile.dotnetrestore diff --git a/.github/docker/Dockerfile.golang b/baseimages/Dockerfile.golang similarity index 100% rename from .github/docker/Dockerfile.golang rename to baseimages/Dockerfile.golang diff --git a/.github/docker/Dockerfile.node b/baseimages/Dockerfile.node similarity index 100% rename from .github/docker/Dockerfile.node rename to baseimages/Dockerfile.node diff --git a/.github/docker/Dockerfile.python b/baseimages/Dockerfile.python similarity index 100% rename from .github/docker/Dockerfile.python rename to baseimages/Dockerfile.python diff --git a/.github/docker/Dockerfile.rust b/baseimages/Dockerfile.rust similarity index 100% rename from .github/docker/Dockerfile.rust rename to baseimages/Dockerfile.rust diff --git a/.github/docker/Dockerfile.swift b/baseimages/Dockerfile.swift similarity index 100% rename from .github/docker/Dockerfile.swift rename to baseimages/Dockerfile.swift diff --git a/internal/cmd/fetcher/main_test.go b/internal/cmd/fetcher/main_test.go index b5f4ef66d..4beccbfe0 100644 --- a/internal/cmd/fetcher/main_test.go +++ b/internal/cmd/fetcher/main_test.go @@ -309,12 +309,12 @@ func (m *mockFetcher) Fetch(_ context.Context, config *source.Config) (string, e // setupTestRepository creates a complete test repository structure with: // - plugins/ directory with base-plugin and consumer-plugin // - source.yaml files for version detection -// - .github/docker/ directory with base images. +// - baseimages/ directory with base images. func setupTestRepository(t *testing.T, tmpDir string) { t.Helper() // Create base Docker images directory (required by run()) - baseImageDir := filepath.Join(tmpDir, ".github", "docker") + baseImageDir := filepath.Join(tmpDir, "baseimages") require.NoError(t, os.MkdirAll(baseImageDir, 0755)) // Create required docker/dockerfile base image diff --git a/internal/docker/baseimage.go b/internal/docker/baseimage.go index 3816ef435..40db92460 100644 --- a/internal/docker/baseimage.go +++ b/internal/docker/baseimage.go @@ -14,16 +14,16 @@ var ( distrolessNamePrefix = "gcr.io/distroless/" ) -// BaseImages contains state about the latest versions of base images in the .github/docker directory. +// BaseImages contains state about the latest versions of base images in the baseimages directory. // These are automatically kept up to date by dependabot. type BaseImages struct { latestVersions map[string]string latestDistrolessImageNames map[string]string } -// ImageNameAndVersion returns the latest image name and version (if tracked in the .github/docker directory). +// ImageNameAndVersion returns the latest image name and version (if tracked in the baseimages directory). // For example, passing "debian" will return "debian:bookworm-yyyyMMdd" (where "yyyyMMdd" is the latest image date). -// If the image is not tracked in the .github/docker directory, returns an empty string. +// If the image is not tracked in the baseimages directory, returns an empty string. // This is used to automate updating Dockerfile base image versions when fetching new versions of plugins. func (b *BaseImages) ImageNameAndVersion(imageName string) string { latestImageName := imageName @@ -37,9 +37,9 @@ func (b *BaseImages) ImageNameAndVersion(imageName string) string { return latestImageName + ":" + latestVersion } -// ImageVersion returns the latest version for the image name (if tracked in the .github/docker directory). +// ImageVersion returns the latest version for the image name (if tracked in the baseimages directory). // For example, passing "debian" will return "bookworm-yyyyMMdd" (where "yyyyMMdd" is the latest image date). -// If the image is not tracked in the .github/docker directory, returns an empty string. +// If the image is not tracked in the baseimages directory, returns an empty string. func (b *BaseImages) ImageVersion(imageName string) string { latestImageName := imageName if nameWithoutVersions := distrolessImageNameWithoutVersions(imageName); nameWithoutVersions != "" { @@ -48,30 +48,30 @@ func (b *BaseImages) ImageVersion(imageName string) string { return b.latestVersions[latestImageName] } -// FindBaseImageDir looks for the .github/docker folder starting from basedir. +// FindBaseImageDir looks for the baseimages folder starting from basedir. // It continues to search through parent directories till found (or at the root). func FindBaseImageDir(basedir string) (string, error) { - // Walk up from plugins dir to find .github dir + // Walk up from plugins dir to find the baseimages dir rootDir, err := filepath.Abs(basedir) if err != nil { return "", err } var dockerDir string for { - dockerDir = filepath.Join(rootDir, ".github", "docker") + dockerDir = filepath.Join(rootDir, "baseimages") if st, err := os.Stat(dockerDir); err == nil && st.IsDir() { break } newRootDir := filepath.Dir(rootDir) if newRootDir == rootDir { - return "", fmt.Errorf("failed to find .github directory from %s", basedir) + return "", fmt.Errorf("failed to find baseimages directory from %s", basedir) } rootDir = newRootDir } return dockerDir, nil } -// LoadLatestBaseImages returns the latest base image information from images found in the .github/docker directory. +// LoadLatestBaseImages returns the latest base image information from images found in the baseimages directory. func LoadLatestBaseImages(baseImageDir string) (_ *BaseImages, retErr error) { d, err := os.Open(baseImageDir) if err != nil { diff --git a/internal/docker/baseimage_test.go b/internal/docker/baseimage_test.go index 577f0c044..5a1ad14fb 100644 --- a/internal/docker/baseimage_test.go +++ b/internal/docker/baseimage_test.go @@ -17,12 +17,11 @@ func TestFindBaseImageDir(t *testing.T) { require.NoError(t, err) assert.Equal(t, expectedAbs, baseImageDir) } - expected := "../../.github/docker" + expected := "../../baseimages" verifyDir(".", expected) verifyDir("..", expected) verifyDir("../..", expected) - verifyDir("../../.github", expected) - verifyDir("../../.github/docker", expected) + verifyDir("../../baseimages", expected) } func TestBaseImages(t *testing.T) {