From 1db44c402c58ac864d38d773748a4b6b4af3c890 Mon Sep 17 00:00:00 2001 From: Donal McBreen Date: Fri, 17 Jan 2025 14:46:27 +0000 Subject: [PATCH] Boot accessories after pre-deploy hook That allows you to set proxy config in the hook before booting the proxy. --- lib/kamal/cli/main.rb | 12 +++++------- test/cli/main_test.rb | 4 +--- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/lib/kamal/cli/main.rb b/lib/kamal/cli/main.rb index 4d55e890..2fae36e8 100644 --- a/lib/kamal/cli/main.rb +++ b/lib/kamal/cli/main.rb @@ -9,18 +9,14 @@ class Kamal::Cli::Main < Kamal::Cli::Base say "Ensure Docker is installed...", :magenta invoke "kamal:cli:server:bootstrap", [], invoke_options - say "Ensure kamal-proxy is running...", :magenta - invoke "kamal:cli:proxy:boot", [], invoke_options - - invoke "kamal:cli:accessory:boot", [ "all" ], invoke_options - deploy(boot_proxy: false) + deploy(boot_accessories: true) end end end desc "deploy", "Deploy app to servers" option :skip_push, aliases: "-P", type: :boolean, default: false, desc: "Skip image build and push" - def deploy(boot_proxy: true) + def deploy(boot_accessories: false) runtime = print_runtime do invoke_options = deploy_options @@ -39,7 +35,9 @@ class Kamal::Cli::Main < Kamal::Cli::Base run_hook "pre-deploy", secrets: true say "Ensure kamal-proxy is running...", :magenta - invoke "kamal:cli:proxy:boot", [], invoke_options if boot_proxy + invoke "kamal:cli:proxy:boot", [], invoke_options + + invoke "kamal:cli:accessory:boot", [ "all" ], invoke_options if boot_accessories say "Detect stale containers...", :magenta invoke "kamal:cli:app:stale_containers", [], invoke_options.merge(stop: true) diff --git a/test/cli/main_test.rb b/test/cli/main_test.rb index 8f2ba9fe..e901c3ba 100644 --- a/test/cli/main_test.rb +++ b/test/cli/main_test.rb @@ -8,9 +8,7 @@ class CliMainTest < CliTestCase invoke_options = { "config_file" => "test/fixtures/deploy_simple.yml", "version" => "999", "skip_hooks" => false } Kamal::Cli::Main.any_instance.expects(:invoke).with("kamal:cli:server:bootstrap", [], invoke_options) - Kamal::Cli::Main.any_instance.expects(:invoke).with("kamal:cli:proxy:boot", [], invoke_options) - Kamal::Cli::Main.any_instance.expects(:invoke).with("kamal:cli:accessory:boot", [ "all" ], invoke_options) - Kamal::Cli::Main.any_instance.expects(:deploy) + Kamal::Cli::Main.any_instance.expects(:deploy).with(boot_accessories: true) run_command("setup").tap do |output| assert_match /Ensure Docker is installed.../, output