diff --git a/src/cmd/linuxkit/pkg_build.go b/src/cmd/linuxkit/pkg_build.go index c0b719cdc..43c9b57ce 100644 --- a/src/cmd/linuxkit/pkg_build.go +++ b/src/cmd/linuxkit/pkg_build.go @@ -16,6 +16,7 @@ import ( const ( buildersEnvVar = "LINUXKIT_BUILDERS" envVarCacheDir = "LINUXKIT_CACHE" + envVarBuilderName = "LINUXKIT_BUILDER_NAME" defaultBuilderImage = "moby/buildkit:v0.26.3" ) @@ -40,6 +41,7 @@ func pkgBuildCmd() *cobra.Command { platforms string skipPlatforms string builders string + builderName = flagOverEnvVarOverDefaultString{def: pkglib.DefaultBuilderName(), envVar: envVarBuilderName} builderImage string builderConfig string builderRestart bool @@ -199,6 +201,7 @@ func pkgBuildCmd() *cobra.Command { opts = append(opts, pkglib.WithBuildBuilders(buildersMap)) opts = append(opts, pkglib.WithBuildBuilderConfig(pkglib.BuilderConfig{ + Name: builderName.String(), Image: builderImage, ConfigPath: builderConfig, Restart: builderRestart, @@ -305,6 +308,7 @@ func pkgBuildCmd() *cobra.Command { cmd.Flags().StringVar(&platforms, "platforms", "", "Which platforms to build for, defaults to all of those for which the package can be built") cmd.Flags().StringVar(&skipPlatforms, "skip-platforms", "", "Platforms that should be skipped, even if present in build.yml") cmd.Flags().StringVar(&builders, "builders", "", "Which builders to use for which platforms, e.g. linux/arm64=docker-context-arm64, overrides defaults and environment variables, see https://github.com/linuxkit/linuxkit/blob/master/docs/packages.md#Providing-native-builder-nodes") + cmd.Flags().Var(&builderName, "builder-name", fmt.Sprintf("Name of the buildkit builder container, default: %s, overrides env var %s", pkglib.DefaultBuilderName(), envVarBuilderName)) cmd.Flags().StringVar(&builderImage, "builder-image", defaultBuilderImage, "buildkit builder container image to use") cmd.Flags().StringVar(&builderConfig, "builder-config", "", "path to buildkit builder config.toml file to use, overrides the default config.toml in the builder image. When provided, copied over into builder, along with all certs. Use paths for certificates relative to your local host, they will be adjusted on copying into the container. USE WITH CAUTION") cmd.Flags().BoolVar(&builderRestart, "builder-restart", false, "force restarting builder, even if container with correct name and image exists") diff --git a/src/cmd/linuxkit/pkg_builder.go b/src/cmd/linuxkit/pkg_builder.go index dd745f957..43a05d73a 100644 --- a/src/cmd/linuxkit/pkg_builder.go +++ b/src/cmd/linuxkit/pkg_builder.go @@ -13,6 +13,7 @@ import ( func pkgBuilderCmd() *cobra.Command { var ( builders string + builderName = flagOverEnvVarOverDefaultString{def: pkglib.DefaultBuilderName(), envVar: envVarBuilderName} platforms string builderImage string builderConfigPath string @@ -40,6 +41,7 @@ func pkgBuilderCmd() *cobra.Command { platformsToClean := strings.Split(platforms, ",") bc := pkglib.BuilderConfig{ + Name: builderName.String(), Image: builderImage, ConfigPath: builderConfigPath, } @@ -60,6 +62,7 @@ func pkgBuilderCmd() *cobra.Command { } cmd.PersistentFlags().StringVar(&builders, "builders", "", "Which builders to use for which platforms, e.g. linux/arm64=docker-context-arm64, overrides defaults and environment variables, see https://github.com/linuxkit/linuxkit/blob/master/docs/packages.md#Providing-native-builder-nodes") + cmd.PersistentFlags().Var(&builderName, "builder-name", fmt.Sprintf("Name of the buildkit builder container, default: %s, overrides env var %s", pkglib.DefaultBuilderName(), envVarBuilderName)) cmd.PersistentFlags().StringVar(&platforms, "platforms", fmt.Sprintf("linux/%s", runtime.GOARCH), "Which platforms we built images for") cmd.PersistentFlags().StringVar(&builderImage, "builder-image", defaultBuilderImage, "buildkit builder container image to use") cmd.Flags().StringVar(&builderConfigPath, "builder-config", "", "path to buildkit builder config.toml file to use, overrides the default config.toml in the builder image; USE WITH CAUTION") diff --git a/src/cmd/linuxkit/pkglib/dockerimpl.go b/src/cmd/linuxkit/pkglib/dockerimpl.go index 51762248d..4604e1212 100644 --- a/src/cmd/linuxkit/pkglib/dockerimpl.go +++ b/src/cmd/linuxkit/pkglib/dockerimpl.go @@ -67,6 +67,11 @@ const ( buildkitConfigPath = buildkitConfigDir + "/" + buildkitConfigFileName ) +// DefaultBuilderName returns the default builder container name. +func DefaultBuilderName() string { + return buildkitBuilderName +} + type dockerRunnerImpl struct { cache bool builder BuilderConfig @@ -74,7 +79,7 @@ type dockerRunnerImpl struct { func NewDockerRunner(cache bool, bc BuilderConfig) DockerRunner { if bc.Name == "" { - bc.Name = buildkitBuilderName + bc.Name = DefaultBuilderName() } return &dockerRunnerImpl{cache: cache, builder: bc} }