Allow kamal-proxy run command options to be set
Allow --metrics_port and --debug options to be set via the boot config. --metrics_port support will come in kamal-proxy v0.8.8, so this option doesn't work right now. This will be updated before the next Kamal release though and we can add integration tests for the metrics at that point.
This commit is contained in:
@@ -31,6 +31,8 @@ class Kamal::Cli::Proxy < Kamal::Cli::Base
|
|||||||
option :registry, type: :string, default: nil, desc: "Registry to use for the proxy image"
|
option :registry, type: :string, default: nil, desc: "Registry to use for the proxy image"
|
||||||
option :repository, type: :string, default: nil, desc: "Repository for the proxy image"
|
option :repository, type: :string, default: nil, desc: "Repository for the proxy image"
|
||||||
option :image_version, type: :string, default: nil, desc: "Version of the proxy to run"
|
option :image_version, type: :string, default: nil, desc: "Version of the proxy to run"
|
||||||
|
option :metrics_port, type: :numeric, default: nil, desc: "Port to report prometheus metrics on"
|
||||||
|
option :debug, type: :boolean, default: false, desc: "Whether to run the proxy in debug mode"
|
||||||
option :docker_options, type: :array, default: [], desc: "Docker options to pass to the proxy container", banner: "option=value option2=value2"
|
option :docker_options, type: :array, default: [], desc: "Docker options to pass to the proxy container", banner: "option=value option2=value2"
|
||||||
def boot_config(subcommand)
|
def boot_config(subcommand)
|
||||||
proxy_boot_config = KAMAL.config.proxy_boot
|
proxy_boot_config = KAMAL.config.proxy_boot
|
||||||
@@ -51,6 +53,9 @@ class Kamal::Cli::Proxy < Kamal::Cli::Base
|
|||||||
|
|
||||||
image_version = options[:image_version]
|
image_version = options[:image_version]
|
||||||
|
|
||||||
|
run_command_options = { debug: options[:debug] || nil, "metrics-port": options[:metrics_port] }.compact
|
||||||
|
run_command = "kamal-proxy run #{Kamal::Utils.optionize(run_command_options).join(" ")}" if run_command_options.any?
|
||||||
|
|
||||||
on(KAMAL.proxy_hosts) do |host|
|
on(KAMAL.proxy_hosts) do |host|
|
||||||
execute(*KAMAL.proxy.ensure_proxy_directory)
|
execute(*KAMAL.proxy.ensure_proxy_directory)
|
||||||
if boot_options != proxy_boot_config.default_boot_options
|
if boot_options != proxy_boot_config.default_boot_options
|
||||||
@@ -70,6 +75,12 @@ class Kamal::Cli::Proxy < Kamal::Cli::Base
|
|||||||
else
|
else
|
||||||
execute *KAMAL.proxy.reset_image_version, raise_on_non_zero_exit: false
|
execute *KAMAL.proxy.reset_image_version, raise_on_non_zero_exit: false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if run_command
|
||||||
|
upload! StringIO.new(run_command), KAMAL.config.proxy_run_command_file
|
||||||
|
else
|
||||||
|
execute *KAMAL.proxy.reset_run_command, raise_on_non_zero_exit: false
|
||||||
|
end
|
||||||
end
|
end
|
||||||
when "get"
|
when "get"
|
||||||
|
|
||||||
@@ -81,6 +92,7 @@ class Kamal::Cli::Proxy < Kamal::Cli::Base
|
|||||||
execute *KAMAL.proxy.reset_boot_options, raise_on_non_zero_exit: false
|
execute *KAMAL.proxy.reset_boot_options, raise_on_non_zero_exit: false
|
||||||
execute *KAMAL.proxy.reset_image, raise_on_non_zero_exit: false
|
execute *KAMAL.proxy.reset_image, raise_on_non_zero_exit: false
|
||||||
execute *KAMAL.proxy.reset_image_version, raise_on_non_zero_exit: false
|
execute *KAMAL.proxy.reset_image_version, raise_on_non_zero_exit: false
|
||||||
|
execute *KAMAL.proxy.reset_run_command, raise_on_non_zero_exit: false
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
raise ArgumentError, "Unknown boot_config subcommand #{subcommand}"
|
raise ArgumentError, "Unknown boot_config subcommand #{subcommand}"
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ class Kamal::Commands::Proxy < Kamal::Commands::Base
|
|||||||
end
|
end
|
||||||
|
|
||||||
def boot_config
|
def boot_config
|
||||||
[ :echo, "#{substitute(read_boot_options)} #{substitute(read_image)}:#{substitute(read_image_version)}" ]
|
[ :echo, "#{substitute(read_boot_options)} #{substitute(read_image)}:#{substitute(read_image_version)} #{substitute(read_run_command)}" ]
|
||||||
end
|
end
|
||||||
|
|
||||||
def read_boot_options
|
def read_boot_options
|
||||||
@@ -85,6 +85,10 @@ class Kamal::Commands::Proxy < Kamal::Commands::Base
|
|||||||
read_file(config.proxy_boot.image_version_file, default: Kamal::Configuration::Proxy::Boot::MINIMUM_VERSION)
|
read_file(config.proxy_boot.image_version_file, default: Kamal::Configuration::Proxy::Boot::MINIMUM_VERSION)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def read_run_command
|
||||||
|
read_file(config.proxy_run_command_file)
|
||||||
|
end
|
||||||
|
|
||||||
def reset_boot_options
|
def reset_boot_options
|
||||||
remove_file config.proxy_boot.options_file
|
remove_file config.proxy_boot.options_file
|
||||||
end
|
end
|
||||||
@@ -97,6 +101,10 @@ class Kamal::Commands::Proxy < Kamal::Commands::Base
|
|||||||
remove_file config.proxy_boot.image_version_file
|
remove_file config.proxy_boot.image_version_file
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def reset_run_command
|
||||||
|
remove_file config.proxy_run_command_file
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
def container_name
|
def container_name
|
||||||
config.proxy_boot.container_name
|
config.proxy_boot.container_name
|
||||||
|
|||||||
+31
-9
@@ -5,7 +5,7 @@ class CliProxyTest < CliTestCase
|
|||||||
run_command("boot").tap do |output|
|
run_command("boot").tap do |output|
|
||||||
assert_match "docker login", output
|
assert_match "docker login", output
|
||||||
assert_match "mkdir -p .kamal/proxy/apps-config", output
|
assert_match "mkdir -p .kamal/proxy/apps-config", output
|
||||||
assert_match "echo $(cat .kamal/proxy/options 2> /dev/null || echo \"--publish 80:80 --publish 443:443 --log-opt max-size=10m\") $(cat .kamal/proxy/image 2> /dev/null || echo \"basecamp/kamal-proxy\"):$(cat .kamal/proxy/image_version 2> /dev/null || echo \"#{Kamal::Configuration::Proxy::Boot::MINIMUM_VERSION}\") | xargs docker run --name kamal-proxy --network kamal --detach --restart unless-stopped --volume kamal-proxy-config:/home/kamal-proxy/.config/kamal-proxy", output
|
assert_match "echo $(cat .kamal/proxy/options 2> /dev/null || echo \"--publish 80:80 --publish 443:443 --log-opt max-size=10m\") $(cat .kamal/proxy/image 2> /dev/null || echo \"basecamp/kamal-proxy\"):$(cat .kamal/proxy/image_version 2> /dev/null || echo \"#{Kamal::Configuration::Proxy::Boot::MINIMUM_VERSION}\") $(cat .kamal/proxy/run_command 2> /dev/null || echo \"\") | xargs docker run --name kamal-proxy --network kamal --detach --restart unless-stopped --volume kamal-proxy-config:/home/kamal-proxy/.config/kamal-proxy", output
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -19,7 +19,7 @@ class CliProxyTest < CliTestCase
|
|||||||
exception = assert_raises do
|
exception = assert_raises do
|
||||||
run_command("boot").tap do |output|
|
run_command("boot").tap do |output|
|
||||||
assert_match "docker login", output
|
assert_match "docker login", output
|
||||||
assert_match "echo $(cat .kamal/proxy/options 2> /dev/null || echo \"--publish 80:80 --publish 443:443 --log-opt max-size=10m\") $(cat .kamal/proxy/image 2> /dev/null || echo \"basecamp/kamal-proxy\"):$(cat .kamal/proxy/image_version 2> /dev/null || echo \"#{Kamal::Configuration::Proxy::Boot::MINIMUM_VERSION}\") | xargs docker run --name kamal-proxy --network kamal --detach --restart unless-stopped --volume kamal-proxy-config:/home/kamal-proxy/.config/kamal-proxy", output
|
assert_match "echo $(cat .kamal/proxy/options 2> /dev/null || echo \"--publish 80:80 --publish 443:443 --log-opt max-size=10m\") $(cat .kamal/proxy/image 2> /dev/null || echo \"basecamp/kamal-proxy\"):$(cat .kamal/proxy/image_version 2> /dev/null || echo \"#{Kamal::Configuration::Proxy::Boot::MINIMUM_VERSION}\") $(cat .kamal/proxy/run_command 2> /dev/null || echo \"\") | xargs docker run --name kamal-proxy --network kamal --detach --restart unless-stopped --volume kamal-proxy-config:/home/kamal-proxy/.config/kamal-proxy", output
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -37,7 +37,7 @@ class CliProxyTest < CliTestCase
|
|||||||
|
|
||||||
run_command("boot").tap do |output|
|
run_command("boot").tap do |output|
|
||||||
assert_match "docker login", output
|
assert_match "docker login", output
|
||||||
assert_match "docker container start kamal-proxy || echo $(cat .kamal/proxy/options 2> /dev/null || echo \"--publish 80:80 --publish 443:443 --log-opt max-size=10m\") $(cat .kamal/proxy/image 2> /dev/null || echo \"basecamp/kamal-proxy\"):$(cat .kamal/proxy/image_version 2> /dev/null || echo \"#{Kamal::Configuration::Proxy::Boot::MINIMUM_VERSION}\") | xargs docker run --name kamal-proxy --network kamal --detach --restart unless-stopped --volume kamal-proxy-config:/home/kamal-proxy/.config/kamal-proxy", output
|
assert_match "docker container start kamal-proxy || echo $(cat .kamal/proxy/options 2> /dev/null || echo \"--publish 80:80 --publish 443:443 --log-opt max-size=10m\") $(cat .kamal/proxy/image 2> /dev/null || echo \"basecamp/kamal-proxy\"):$(cat .kamal/proxy/image_version 2> /dev/null || echo \"#{Kamal::Configuration::Proxy::Boot::MINIMUM_VERSION}\") $(cat .kamal/proxy/run_command 2> /dev/null || echo \"\") | xargs docker run --name kamal-proxy --network kamal --detach --restart unless-stopped --volume kamal-proxy-config:/home/kamal-proxy/.config/kamal-proxy", output
|
||||||
end
|
end
|
||||||
ensure
|
ensure
|
||||||
Thread.report_on_exception = false
|
Thread.report_on_exception = false
|
||||||
@@ -58,13 +58,13 @@ class CliProxyTest < CliTestCase
|
|||||||
assert_match "docker container stop kamal-proxy on 1.1.1.1", output
|
assert_match "docker container stop kamal-proxy on 1.1.1.1", output
|
||||||
assert_match "docker container prune --force --filter label=org.opencontainers.image.title=kamal-proxy on 1.1.1.1", output
|
assert_match "docker container prune --force --filter label=org.opencontainers.image.title=kamal-proxy on 1.1.1.1", output
|
||||||
assert_match "mkdir -p .kamal/proxy/apps-config on 1.1.1.1", output
|
assert_match "mkdir -p .kamal/proxy/apps-config on 1.1.1.1", output
|
||||||
assert_match "echo $(cat .kamal/proxy/options 2> /dev/null || echo \"--publish 80:80 --publish 443:443 --log-opt max-size=10m\") $(cat .kamal/proxy/image 2> /dev/null || echo \"basecamp/kamal-proxy\"):$(cat .kamal/proxy/image_version 2> /dev/null || echo \"#{Kamal::Configuration::Proxy::Boot::MINIMUM_VERSION}\") | xargs docker run --name kamal-proxy --network kamal --detach --restart unless-stopped --volume kamal-proxy-config:/home/kamal-proxy/.config/kamal-proxy --volume $(pwd)/.kamal/proxy/apps-config:/home/kamal-proxy/.apps-config on 1.1.1.1", output
|
assert_match "echo $(cat .kamal/proxy/options 2> /dev/null || echo \"--publish 80:80 --publish 443:443 --log-opt max-size=10m\") $(cat .kamal/proxy/image 2> /dev/null || echo \"basecamp/kamal-proxy\"):$(cat .kamal/proxy/image_version 2> /dev/null || echo \"#{Kamal::Configuration::Proxy::Boot::MINIMUM_VERSION}\") $(cat .kamal/proxy/run_command 2> /dev/null || echo \"\") | xargs docker run --name kamal-proxy --network kamal --detach --restart unless-stopped --volume kamal-proxy-config:/home/kamal-proxy/.config/kamal-proxy --volume $(pwd)/.kamal/proxy/apps-config:/home/kamal-proxy/.apps-config on 1.1.1.1", output
|
||||||
assert_match "docker exec kamal-proxy kamal-proxy deploy app-web --target=\"abcdefabcdef:80\" --deploy-timeout=\"6s\" --drain-timeout=\"30s\" --buffer-requests --buffer-responses --log-request-header=\"Cache-Control\" --log-request-header=\"Last-Modified\" --log-request-header=\"User-Agent\" on 1.1.1.1", output
|
assert_match "docker exec kamal-proxy kamal-proxy deploy app-web --target=\"abcdefabcdef:80\" --deploy-timeout=\"6s\" --drain-timeout=\"30s\" --buffer-requests --buffer-responses --log-request-header=\"Cache-Control\" --log-request-header=\"Last-Modified\" --log-request-header=\"User-Agent\" on 1.1.1.1", output
|
||||||
|
|
||||||
assert_match "docker container stop kamal-proxy on 1.1.1.2", output
|
assert_match "docker container stop kamal-proxy on 1.1.1.2", output
|
||||||
assert_match "docker container prune --force --filter label=org.opencontainers.image.title=kamal-proxy on 1.1.1.2", output
|
assert_match "docker container prune --force --filter label=org.opencontainers.image.title=kamal-proxy on 1.1.1.2", output
|
||||||
assert_match "mkdir -p .kamal/proxy/apps-config on 1.1.1.1", output
|
assert_match "mkdir -p .kamal/proxy/apps-config on 1.1.1.1", output
|
||||||
assert_match "echo $(cat .kamal/proxy/options 2> /dev/null || echo \"--publish 80:80 --publish 443:443 --log-opt max-size=10m\") $(cat .kamal/proxy/image 2> /dev/null || echo \"basecamp/kamal-proxy\"):$(cat .kamal/proxy/image_version 2> /dev/null || echo \"#{Kamal::Configuration::Proxy::Boot::MINIMUM_VERSION}\") | xargs docker run --name kamal-proxy --network kamal --detach --restart unless-stopped --volume kamal-proxy-config:/home/kamal-proxy/.config/kamal-proxy --volume $(pwd)/.kamal/proxy/apps-config:/home/kamal-proxy/.apps-config on 1.1.1.2", output
|
assert_match "echo $(cat .kamal/proxy/options 2> /dev/null || echo \"--publish 80:80 --publish 443:443 --log-opt max-size=10m\") $(cat .kamal/proxy/image 2> /dev/null || echo \"basecamp/kamal-proxy\"):$(cat .kamal/proxy/image_version 2> /dev/null || echo \"#{Kamal::Configuration::Proxy::Boot::MINIMUM_VERSION}\") $(cat .kamal/proxy/run_command 2> /dev/null || echo \"\") | xargs docker run --name kamal-proxy --network kamal --detach --restart unless-stopped --volume kamal-proxy-config:/home/kamal-proxy/.config/kamal-proxy --volume $(pwd)/.kamal/proxy/apps-config:/home/kamal-proxy/.apps-config on 1.1.1.2", output
|
||||||
assert_match "docker exec kamal-proxy kamal-proxy deploy app-web --target=\"abcdefabcdef:80\" --deploy-timeout=\"6s\" --drain-timeout=\"30s\" --buffer-requests --buffer-responses --log-request-header=\"Cache-Control\" --log-request-header=\"Last-Modified\" --log-request-header=\"User-Agent\" on 1.1.1.2", output
|
assert_match "docker exec kamal-proxy kamal-proxy deploy app-web --target=\"abcdefabcdef:80\" --deploy-timeout=\"6s\" --drain-timeout=\"30s\" --buffer-requests --buffer-responses --log-request-header=\"Cache-Control\" --log-request-header=\"Last-Modified\" --log-request-header=\"User-Agent\" on 1.1.1.2", output
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -199,7 +199,7 @@ class CliProxyTest < CliTestCase
|
|||||||
assert_match "/usr/bin/env mkdir -p .kamal", output
|
assert_match "/usr/bin/env mkdir -p .kamal", output
|
||||||
assert_match "docker network create kamal", output
|
assert_match "docker network create kamal", output
|
||||||
assert_match "docker login -u [REDACTED] -p [REDACTED]", output
|
assert_match "docker login -u [REDACTED] -p [REDACTED]", output
|
||||||
assert_match "docker container start kamal-proxy || echo $(cat .kamal/proxy/options 2> /dev/null || echo \"--publish 80:80 --publish 443:443 --log-opt max-size=10m\") $(cat .kamal/proxy/image 2> /dev/null || echo \"basecamp/kamal-proxy\"):$(cat .kamal/proxy/image_version 2> /dev/null || echo \"#{Kamal::Configuration::Proxy::Boot::MINIMUM_VERSION}\") | xargs docker run --name kamal-proxy --network kamal --detach --restart unless-stopped --volume kamal-proxy-config:/home/kamal-proxy/.config/kamal-proxy", output
|
assert_match "docker container start kamal-proxy || echo $(cat .kamal/proxy/options 2> /dev/null || echo \"--publish 80:80 --publish 443:443 --log-opt max-size=10m\") $(cat .kamal/proxy/image 2> /dev/null || echo \"basecamp/kamal-proxy\"):$(cat .kamal/proxy/image_version 2> /dev/null || echo \"#{Kamal::Configuration::Proxy::Boot::MINIMUM_VERSION}\") $(cat .kamal/proxy/run_command 2> /dev/null || echo \"\") | xargs docker run --name kamal-proxy --network kamal --detach --restart unless-stopped --volume kamal-proxy-config:/home/kamal-proxy/.config/kamal-proxy", output
|
||||||
assert_match "/usr/bin/env mkdir -p .kamal", output
|
assert_match "/usr/bin/env mkdir -p .kamal", output
|
||||||
assert_match %r{docker rename app-web-latest app-web-latest_replaced_.*}, output
|
assert_match %r{docker rename app-web-latest app-web-latest_replaced_.*}, output
|
||||||
assert_match "/usr/bin/env mkdir -p .kamal/apps/app/env/roles", output
|
assert_match "/usr/bin/env mkdir -p .kamal/apps/app/env/roles", output
|
||||||
@@ -243,7 +243,9 @@ class CliProxyTest < CliTestCase
|
|||||||
assert_match "Running /usr/bin/env mkdir -p .kamal/proxy on #{host}", output
|
assert_match "Running /usr/bin/env mkdir -p .kamal/proxy on #{host}", output
|
||||||
assert_match "Running /usr/bin/env rm .kamal/proxy/options on #{host}", output
|
assert_match "Running /usr/bin/env rm .kamal/proxy/options on #{host}", output
|
||||||
assert_match "Running /usr/bin/env rm .kamal/proxy/image on #{host}", output
|
assert_match "Running /usr/bin/env rm .kamal/proxy/image on #{host}", output
|
||||||
assert_match "Running /usr/bin/env rm .kamal/proxy/image_version on #{host}", output end
|
assert_match "Running /usr/bin/env rm .kamal/proxy/image_version on #{host}", output
|
||||||
|
assert_match "Running /usr/bin/env rm .kamal/proxy/run_command on #{host}", output
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -254,6 +256,7 @@ class CliProxyTest < CliTestCase
|
|||||||
assert_match "Uploading \"--log-opt max-size=10m\" to .kamal/proxy/options on #{host}", output
|
assert_match "Uploading \"--log-opt max-size=10m\" to .kamal/proxy/options on #{host}", output
|
||||||
assert_match "Running /usr/bin/env rm .kamal/proxy/image on #{host}", output
|
assert_match "Running /usr/bin/env rm .kamal/proxy/image on #{host}", output
|
||||||
assert_match "Running /usr/bin/env rm .kamal/proxy/image_version on #{host}", output
|
assert_match "Running /usr/bin/env rm .kamal/proxy/image_version on #{host}", output
|
||||||
|
assert_match "Running /usr/bin/env rm .kamal/proxy/run_command on #{host}", output
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -265,6 +268,7 @@ class CliProxyTest < CliTestCase
|
|||||||
assert_match "Uploading \"--publish 80:80 --publish 443:443 --log-opt max-size=100m\" to .kamal/proxy/options on #{host}", output
|
assert_match "Uploading \"--publish 80:80 --publish 443:443 --log-opt max-size=100m\" to .kamal/proxy/options on #{host}", output
|
||||||
assert_match "Running /usr/bin/env rm .kamal/proxy/image on #{host}", output
|
assert_match "Running /usr/bin/env rm .kamal/proxy/image on #{host}", output
|
||||||
assert_match "Running /usr/bin/env rm .kamal/proxy/image_version on #{host}", output
|
assert_match "Running /usr/bin/env rm .kamal/proxy/image_version on #{host}", output
|
||||||
|
assert_match "Running /usr/bin/env rm .kamal/proxy/run_command on #{host}", output
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -276,6 +280,7 @@ class CliProxyTest < CliTestCase
|
|||||||
assert_match "Uploading \"--publish 80:80 --publish 443:443\" to .kamal/proxy/options on #{host}", output
|
assert_match "Uploading \"--publish 80:80 --publish 443:443\" to .kamal/proxy/options on #{host}", output
|
||||||
assert_match "Running /usr/bin/env rm .kamal/proxy/image on #{host}", output
|
assert_match "Running /usr/bin/env rm .kamal/proxy/image on #{host}", output
|
||||||
assert_match "Running /usr/bin/env rm .kamal/proxy/image_version on #{host}", output
|
assert_match "Running /usr/bin/env rm .kamal/proxy/image_version on #{host}", output
|
||||||
|
assert_match "Running /usr/bin/env rm .kamal/proxy/run_command on #{host}", output
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -322,6 +327,7 @@ class CliProxyTest < CliTestCase
|
|||||||
assert_match "Uploading \"--publish 80:80 --publish 443:443 --log-opt max-size=10m --label=foo=bar --add_host=thishost:thathost\" to .kamal/proxy/options on #{host}", output
|
assert_match "Uploading \"--publish 80:80 --publish 443:443 --log-opt max-size=10m --label=foo=bar --add_host=thishost:thathost\" to .kamal/proxy/options on #{host}", output
|
||||||
assert_match "Running /usr/bin/env rm .kamal/proxy/image on #{host}", output
|
assert_match "Running /usr/bin/env rm .kamal/proxy/image on #{host}", output
|
||||||
assert_match "Running /usr/bin/env rm .kamal/proxy/image_version on #{host}", output
|
assert_match "Running /usr/bin/env rm .kamal/proxy/image_version on #{host}", output
|
||||||
|
assert_match "Running /usr/bin/env rm .kamal/proxy/run_command on #{host}", output
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -333,6 +339,7 @@ class CliProxyTest < CliTestCase
|
|||||||
assert_match "Running /usr/bin/env rm .kamal/proxy/options on #{host}", output
|
assert_match "Running /usr/bin/env rm .kamal/proxy/options on #{host}", output
|
||||||
assert_match "Uploading \"myreg/basecamp/kamal-proxy\" to .kamal/proxy/image on #{host}", output
|
assert_match "Uploading \"myreg/basecamp/kamal-proxy\" to .kamal/proxy/image on #{host}", output
|
||||||
assert_match "Running /usr/bin/env rm .kamal/proxy/image_version on #{host}", output
|
assert_match "Running /usr/bin/env rm .kamal/proxy/image_version on #{host}", output
|
||||||
|
assert_match "Running /usr/bin/env rm .kamal/proxy/run_command on #{host}", output
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -344,6 +351,7 @@ class CliProxyTest < CliTestCase
|
|||||||
assert_match "Running /usr/bin/env rm .kamal/proxy/options on #{host}", output
|
assert_match "Running /usr/bin/env rm .kamal/proxy/options on #{host}", output
|
||||||
assert_match "Uploading \"myrepo/kamal-proxy\" to .kamal/proxy/image on #{host}", output
|
assert_match "Uploading \"myrepo/kamal-proxy\" to .kamal/proxy/image on #{host}", output
|
||||||
assert_match "Running /usr/bin/env rm .kamal/proxy/image_version on #{host}", output
|
assert_match "Running /usr/bin/env rm .kamal/proxy/image_version on #{host}", output
|
||||||
|
assert_match "Running /usr/bin/env rm .kamal/proxy/run_command on #{host}", output
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -355,23 +363,37 @@ class CliProxyTest < CliTestCase
|
|||||||
assert_match "Running /usr/bin/env rm .kamal/proxy/options on #{host}", output
|
assert_match "Running /usr/bin/env rm .kamal/proxy/options on #{host}", output
|
||||||
assert_match "Running /usr/bin/env rm .kamal/proxy/image on #{host}", output
|
assert_match "Running /usr/bin/env rm .kamal/proxy/image on #{host}", output
|
||||||
assert_match "Uploading \"0.9.9\" to .kamal/proxy/image_version on #{host}", output
|
assert_match "Uploading \"0.9.9\" to .kamal/proxy/image_version on #{host}", output
|
||||||
|
assert_match "Running /usr/bin/env rm .kamal/proxy/run_command on #{host}", output
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
test "boot_config set run_command" do
|
||||||
|
run_command("boot_config", "set", "--metrics_port", "9000", "--debug", "true").tap do |output|
|
||||||
|
%w[ 1.1.1.1 1.1.1.2 ].each do |host|
|
||||||
|
assert_match "Running /usr/bin/env mkdir -p .kamal/proxy on #{host}", output
|
||||||
|
assert_match "Running /usr/bin/env rm .kamal/proxy/options on #{host}", output
|
||||||
|
assert_match "Running /usr/bin/env rm .kamal/proxy/image on #{host}", output
|
||||||
|
assert_match "Running /usr/bin/env rm .kamal/proxy/image_version on #{host}", output
|
||||||
|
assert_match "Uploading \"kamal-proxy run --debug --metrics-port \\\"9000\\\"\" to .kamal/proxy/run_command on #{host}", output
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
test "boot_config set all" do
|
test "boot_config set all" do
|
||||||
run_command("boot_config", "set", "--docker_options", "label=foo=bar", "--registry", "myreg", "--repository", "myrepo", "--image_version", "0.9.9").tap do |output|
|
run_command("boot_config", "set", "--docker_options", "label=foo=bar", "--registry", "myreg", "--repository", "myrepo", "--image_version", "0.9.9", "--metrics_port", "9000", "--debug", "true").tap do |output|
|
||||||
%w[ 1.1.1.1 1.1.1.2 ].each do |host|
|
%w[ 1.1.1.1 1.1.1.2 ].each do |host|
|
||||||
assert_match "Uploading \"--publish 80:80 --publish 443:443 --log-opt max-size=10m --label=foo=bar\" to .kamal/proxy/options on #{host}", output
|
assert_match "Uploading \"--publish 80:80 --publish 443:443 --log-opt max-size=10m --label=foo=bar\" to .kamal/proxy/options on #{host}", output
|
||||||
assert_match "Uploading \"myreg/myrepo/kamal-proxy\" to .kamal/proxy/image on #{host}", output
|
assert_match "Uploading \"myreg/myrepo/kamal-proxy\" to .kamal/proxy/image on #{host}", output
|
||||||
assert_match "Uploading \"0.9.9\" to .kamal/proxy/image_version on #{host}", output
|
assert_match "Uploading \"0.9.9\" to .kamal/proxy/image_version on #{host}", output
|
||||||
|
assert_match "Uploading \"kamal-proxy run --debug --metrics-port \\\"9000\\\"\" to .kamal/proxy/run_command on #{host}", output
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
test "boot_config get" do
|
test "boot_config get" do
|
||||||
SSHKit::Backend::Abstract.any_instance.expects(:capture_with_info)
|
SSHKit::Backend::Abstract.any_instance.expects(:capture_with_info)
|
||||||
.with(:echo, "$(cat .kamal/proxy/options 2> /dev/null || echo \"--publish 80:80 --publish 443:443 --log-opt max-size=10m\") $(cat .kamal/proxy/image 2> /dev/null || echo \"basecamp/kamal-proxy\"):$(cat .kamal/proxy/image_version 2> /dev/null || echo \"v0.8.7\")")
|
.with(:echo, "$(cat .kamal/proxy/options 2> /dev/null || echo \"--publish 80:80 --publish 443:443 --log-opt max-size=10m\") $(cat .kamal/proxy/image 2> /dev/null || echo \"basecamp/kamal-proxy\"):$(cat .kamal/proxy/image_version 2> /dev/null || echo \"#{Kamal::Configuration::Proxy::Boot::MINIMUM_VERSION}\") $(cat .kamal/proxy/run_command 2> /dev/null || echo \"\")")
|
||||||
.returns("--publish 80:80 --publish 8443:443 --label=foo=bar basecamp/kamal-proxy:v1.0.0")
|
.returns("--publish 80:80 --publish 8443:443 --label=foo=bar basecamp/kamal-proxy:v1.0.0")
|
||||||
.twice
|
.twice
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ class CommandsProxyTest < ActiveSupport::TestCase
|
|||||||
|
|
||||||
test "run" do
|
test "run" do
|
||||||
assert_equal \
|
assert_equal \
|
||||||
"echo $(cat .kamal/proxy/options 2> /dev/null || echo \"--publish 80:80 --publish 443:443 --log-opt max-size=10m\") $(cat .kamal/proxy/image 2> /dev/null || echo \"basecamp/kamal-proxy\"):$(cat .kamal/proxy/image_version 2> /dev/null || echo \"#{Kamal::Configuration::Proxy::Boot::MINIMUM_VERSION}\") | xargs docker run --name kamal-proxy --network kamal --detach --restart unless-stopped --volume kamal-proxy-config:/home/kamal-proxy/.config/kamal-proxy --volume $(pwd)/.kamal/proxy/apps-config:/home/kamal-proxy/.apps-config",
|
"echo $(cat .kamal/proxy/options 2> /dev/null || echo \"--publish 80:80 --publish 443:443 --log-opt max-size=10m\") $(cat .kamal/proxy/image 2> /dev/null || echo \"basecamp/kamal-proxy\"):$(cat .kamal/proxy/image_version 2> /dev/null || echo \"#{Kamal::Configuration::Proxy::Boot::MINIMUM_VERSION}\") $(cat .kamal/proxy/run_command 2> /dev/null || echo \"\") | xargs docker run --name kamal-proxy --network kamal --detach --restart unless-stopped --volume kamal-proxy-config:/home/kamal-proxy/.config/kamal-proxy --volume $(pwd)/.kamal/proxy/apps-config:/home/kamal-proxy/.apps-config",
|
||||||
new_command.run.join(" ")
|
new_command.run.join(" ")
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -23,7 +23,7 @@ class CommandsProxyTest < ActiveSupport::TestCase
|
|||||||
@config.delete(:proxy)
|
@config.delete(:proxy)
|
||||||
|
|
||||||
assert_equal \
|
assert_equal \
|
||||||
"echo $(cat .kamal/proxy/options 2> /dev/null || echo \"--publish 80:80 --publish 443:443 --log-opt max-size=10m\") $(cat .kamal/proxy/image 2> /dev/null || echo \"basecamp/kamal-proxy\"):$(cat .kamal/proxy/image_version 2> /dev/null || echo \"#{Kamal::Configuration::Proxy::Boot::MINIMUM_VERSION}\") | xargs docker run --name kamal-proxy --network kamal --detach --restart unless-stopped --volume kamal-proxy-config:/home/kamal-proxy/.config/kamal-proxy --volume $(pwd)/.kamal/proxy/apps-config:/home/kamal-proxy/.apps-config",
|
"echo $(cat .kamal/proxy/options 2> /dev/null || echo \"--publish 80:80 --publish 443:443 --log-opt max-size=10m\") $(cat .kamal/proxy/image 2> /dev/null || echo \"basecamp/kamal-proxy\"):$(cat .kamal/proxy/image_version 2> /dev/null || echo \"#{Kamal::Configuration::Proxy::Boot::MINIMUM_VERSION}\") $(cat .kamal/proxy/run_command 2> /dev/null || echo \"\") | xargs docker run --name kamal-proxy --network kamal --detach --restart unless-stopped --volume kamal-proxy-config:/home/kamal-proxy/.config/kamal-proxy --volume $(pwd)/.kamal/proxy/apps-config:/home/kamal-proxy/.apps-config",
|
||||||
new_command.run.join(" ")
|
new_command.run.join(" ")
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -129,6 +129,12 @@ class CommandsProxyTest < ActiveSupport::TestCase
|
|||||||
new_command.read_image_version.join(" ")
|
new_command.read_image_version.join(" ")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "read_run_command" do
|
||||||
|
assert_equal \
|
||||||
|
"cat .kamal/proxy/run_command 2> /dev/null || echo \"\"",
|
||||||
|
new_command.read_run_command.join(" ")
|
||||||
|
end
|
||||||
|
|
||||||
test "reset_boot_options" do
|
test "reset_boot_options" do
|
||||||
assert_equal \
|
assert_equal \
|
||||||
"rm .kamal/proxy/options",
|
"rm .kamal/proxy/options",
|
||||||
@@ -153,6 +159,12 @@ class CommandsProxyTest < ActiveSupport::TestCase
|
|||||||
new_command.ensure_apps_config_directory.join(" ")
|
new_command.ensure_apps_config_directory.join(" ")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "reset_run_command" do
|
||||||
|
assert_equal \
|
||||||
|
"rm .kamal/proxy/run_command",
|
||||||
|
new_command.reset_run_command.join(" ")
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
def new_command
|
def new_command
|
||||||
Kamal::Commands::Proxy.new(Kamal::Configuration.new(@config, version: "123"))
|
Kamal::Commands::Proxy.new(Kamal::Configuration.new(@config, version: "123"))
|
||||||
|
|||||||
+4
@@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
|
||||||
|
kamal proxy boot_config set --registry registry:4443
|
||||||
Reference in New Issue
Block a user