Skip to content

Commit

Permalink
Supports Passing SSH Args to Build Options
Browse files Browse the repository at this point in the history
  • Loading branch information
rience committed Sep 6, 2023
1 parent adc7173 commit c686b66
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 2 deletions.
8 changes: 6 additions & 2 deletions lib/kamal/commands/builder/base.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ class Kamal::Commands::Builder::Base < Kamal::Commands::Base
class BuilderError < StandardError; end

delegate :argumentize, to: Kamal::Utils
delegate :args, :secrets, :dockerfile, :local_arch, :local_host, :remote_arch, :remote_host, :cache_from, :cache_to, to: :builder_config
delegate :args, :secrets, :dockerfile, :local_arch, :local_host, :remote_arch, :remote_host, :cache_from, :cache_to, :ssh, to: :builder_config

def clean
docker :image, :rm, "--force", config.absolute_image
Expand All @@ -14,7 +14,7 @@ def pull
end

def build_options
[ *build_tags, *build_cache, *build_labels, *build_args, *build_secrets, *build_dockerfile ]
[ *build_tags, *build_cache, *build_labels, *build_args, *build_secrets, *build_dockerfile, *build_ssh ]
end

def build_context
Expand Down Expand Up @@ -54,6 +54,10 @@ def build_dockerfile
end
end

def build_ssh
argumentize "--ssh", ssh if ssh.present?
end

def builder_config
config.builder
end
Expand Down
4 changes: 4 additions & 0 deletions lib/kamal/configuration/builder.rb
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,10 @@ def cache_to
end
end

def ssh
@options["ssh"]
end

private
def valid?
if @options["cache"] && @options["cache"]["type"]
Expand Down
8 changes: 8 additions & 0 deletions test/commands/builder_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,14 @@ class CommandsBuilderTest < ActiveSupport::TestCase
builder.push.join(" ")
end

test "build with ssh agent socket" do
builder = new_builder_command(builder: { "ssh" => 'default=$SSH_AUTH_SOCK' })

assert_equal \
"-t dhh/app:123 -t dhh/app:latest --label service=\"app\" --file Dockerfile --ssh default=$SSH_AUTH_SOCK",
builder.target.build_options.join(" ")
end

private
def new_builder_command(additional_config = {})
Kamal::Commands::Builder.new(Kamal::Configuration.new(@config.merge(additional_config), version: "123"))
Expand Down
10 changes: 10 additions & 0 deletions test/configuration/builder_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -148,4 +148,14 @@ class ConfigurationBuilderTest < ActiveSupport::TestCase

assert_equal "..", @config_with_builder_option.builder.context
end

test "ssh" do
assert_nil @config.builder.ssh
end

test "setting ssh params" do
@deploy_with_builder_option[:builder] = { "ssh" => 'default=$SSH_AUTH_SOCK' }

assert_equal 'default=$SSH_AUTH_SOCK', @config_with_builder_option.builder.ssh
end
end

0 comments on commit c686b66

Please sign in to comment.