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) {