From cbd99306eb79db1f99285564a7737c681006ddcf Mon Sep 17 00:00:00 2001 From: Aleksandr Nigomatulin Date: Mon, 30 Oct 2023 23:27:58 +0600 Subject: [PATCH] Add skip_push option to setup --- lib/kamal/cli/main.rb | 9 ++++++--- test/cli/main_test.rb | 27 +++++++++++++++++++++++---- 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/lib/kamal/cli/main.rb b/lib/kamal/cli/main.rb index b1f54aba..b66073e4 100644 --- a/lib/kamal/cli/main.rb +++ b/lib/kamal/cli/main.rb @@ -1,15 +1,18 @@ class Kamal::Cli::Main < Kamal::Cli::Base desc "setup", "Setup all accessories, push the env, and deploy app to servers" + option :skip_push, aliases: "-P", type: :boolean, default: false, desc: "Skip image build and push" def setup print_runtime do mutating do + invoke_options = deploy_options + say "Ensure Docker is installed...", :magenta - invoke "kamal:cli:server:bootstrap" + invoke "kamal:cli:server:bootstrap", [], invoke_options say "Push env files...", :magenta - invoke "kamal:cli:env:push" + invoke "kamal:cli:env:push", [], invoke_options - invoke "kamal:cli:accessory:boot", [ "all" ] + invoke "kamal:cli:accessory:boot", [ "all" ], invoke_options deploy end end diff --git a/test/cli/main_test.rb b/test/cli/main_test.rb index a19ff90e..e13da92e 100644 --- a/test/cli/main_test.rb +++ b/test/cli/main_test.rb @@ -2,12 +2,31 @@ require_relative "cli_test_case" class CliMainTest < CliTestCase test "setup" do - Kamal::Cli::Main.any_instance.expects(:invoke).with("kamal:cli:server:bootstrap") - Kamal::Cli::Main.any_instance.expects(:invoke).with("kamal:cli:env:push") - Kamal::Cli::Main.any_instance.expects(:invoke).with("kamal:cli:accessory:boot", [ "all" ]) + 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:env:push", [], invoke_options) + Kamal::Cli::Main.any_instance.expects(:invoke).with("kamal:cli:accessory:boot", [ "all" ], invoke_options) Kamal::Cli::Main.any_instance.expects(:deploy) - run_command("setup") + run_command("setup").tap do |output| + assert_match /Ensure Docker is installed.../, output + assert_match /Push env files.../, output + end + end + + test "setup with skip_push" do + 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:env:push", [], invoke_options) + Kamal::Cli::Main.any_instance.expects(:invoke).with("kamal:cli:accessory:boot", [ "all" ], invoke_options) + Kamal::Cli::Main.any_instance.expects(:deploy) + + run_command("setup", "--skip_push").tap do |output| + assert_match /Ensure Docker is installed.../, output + assert_match /Push env files.../, output + end end test "deploy" do