Downgrade from Kamal 2 to 1.9
Add a downgrade command, so you can reverse the upgrade process and go back to Kamal 1.9. This replaces kamal-proxy and reboots all the accessories. This gives an upgrade and downgrade path: Upgrade: 1. Upgrade config to be Kamal 2 compatible + use kamal 2.0 2. Run `kamal upgrade` Downgrade: 1. Switch back to previous config + use kamal 1.9 2. Run `kamal downgrade` You can set `--rolling` to downgrade one host at a time.
This commit is contained in:
@@ -537,6 +537,34 @@ class CliMainTest < CliTestCase
|
||||
assert_equal Kamal::VERSION, version
|
||||
end
|
||||
|
||||
test "downgrade" do
|
||||
invoke_options = { "config_file" => "test/fixtures/deploy_with_accessories.yml", "skip_hooks" => false, "confirmed" => true, "rolling" => false }
|
||||
Kamal::Cli::Main.any_instance.expects(:invoke).with("kamal:cli:traefik:downgrade", [], invoke_options)
|
||||
Kamal::Cli::Main.any_instance.expects(:invoke).with("kamal:cli:accessory:downgrade", [ "all" ], invoke_options)
|
||||
|
||||
run_command("downgrade", "-y", config_file: "deploy_with_accessories").tap do |output|
|
||||
assert_match "Downgrading all hosts...", output
|
||||
assert_match "Downgraded all hosts", output
|
||||
end
|
||||
end
|
||||
|
||||
test "downgrade rolling" do
|
||||
invoke_options = { "config_file" => "test/fixtures/deploy_with_accessories.yml", "skip_hooks" => false, "confirmed" => true, "rolling" => false }
|
||||
Kamal::Cli::Main.any_instance.expects(:invoke).with("kamal:cli:traefik:downgrade", [], invoke_options).times(4)
|
||||
Kamal::Cli::Main.any_instance.expects(:invoke).with("kamal:cli:accessory:downgrade", [ "all" ], invoke_options).times(3)
|
||||
|
||||
run_command("downgrade", "--rolling", "-y", config_file: "deploy_with_accessories").tap do |output|
|
||||
assert_match "Downgrading 1.1.1.1...", output
|
||||
assert_match "Downgraded 1.1.1.1", output
|
||||
assert_match "Downgrading 1.1.1.2...", output
|
||||
assert_match "Downgraded 1.1.1.2", output
|
||||
assert_match "Downgrading 1.1.1.3...", output
|
||||
assert_match "Downgraded 1.1.1.3", output
|
||||
assert_match "Downgrading 1.1.1.4...", output
|
||||
assert_match "Downgraded 1.1.1.4", output
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
def run_command(*command, config_file: "deploy_simple")
|
||||
stdouted { Kamal::Cli::Main.start([ *command, "-c", "test/fixtures/#{config_file}.yml" ]) }
|
||||
|
||||
Reference in New Issue
Block a user