feat: Introduce a build push --output option
which controls where the build result is exported.
The default value is "registry" to reflect the current behavior of
`build push`.
Any value provided to this option will be passed to the `buildx build`
command as a `--output=type=<VALUE>` flag.
For example, the following command will push to the local docker image
store:
kamal build push --output=docker
squash
This commit is contained in:
@@ -5,11 +5,12 @@ class Kamal::Cli::Build < Kamal::Cli::Base
|
||||
|
||||
desc "deliver", "Build app and push app image to registry then pull image on servers"
|
||||
def deliver
|
||||
push
|
||||
pull
|
||||
invoke :push
|
||||
invoke :pull
|
||||
end
|
||||
|
||||
desc "push", "Build and push app image to registry"
|
||||
option :output, type: :string, default: "registry", banner: "export_type", desc: "Exported type for the build result, and may be any exported type supported by 'buildx --output'."
|
||||
def push
|
||||
cli = self
|
||||
|
||||
@@ -49,7 +50,7 @@ class Kamal::Cli::Build < Kamal::Cli::Base
|
||||
end
|
||||
|
||||
# Get the command here to ensure the Dir.chdir doesn't interfere with it
|
||||
push = KAMAL.builder.push
|
||||
push = KAMAL.builder.push(cli.options[:output])
|
||||
|
||||
KAMAL.with_verbosity(:debug) do
|
||||
Dir.chdir(KAMAL.config.builder.build_directory) { execute *push }
|
||||
|
||||
@@ -13,9 +13,9 @@ class Kamal::Commands::Builder::Base < Kamal::Commands::Base
|
||||
docker :image, :rm, "--force", config.absolute_image
|
||||
end
|
||||
|
||||
def push
|
||||
def push(export_action = "registry")
|
||||
docker :buildx, :build,
|
||||
"--push",
|
||||
"--output=type=#{export_action}",
|
||||
*platform_options(arches),
|
||||
*([ "--builder", builder_name ] unless docker_driver?),
|
||||
*build_options,
|
||||
|
||||
Reference in New Issue
Block a user