Remove the env check

The env check is not needded anymore as all the commands rely on the
env files having already been created remotely.

The only place the env is needed is when running `kamal env push` and
that will still raise an apropriate error.
This commit is contained in:
Donal McBreen
2023-09-25 15:23:01 +01:00
parent 83a2d52ff4
commit f6662c7a8f
5 changed files with 16 additions and 20 deletions

View File

@@ -75,8 +75,6 @@ module Kamal::Cli
def mutating def mutating
return yield if KAMAL.holding_lock? return yield if KAMAL.holding_lock?
KAMAL.config.ensure_env_available
run_hook "pre-connect" run_hook "pre-connect"
ensure_run_directory ensure_run_directory

View File

@@ -204,13 +204,6 @@ class Kamal::Configuration
ensure_destination_if_required && ensure_required_keys_present && ensure_valid_kamal_version ensure_destination_if_required && ensure_required_keys_present && ensure_valid_kamal_version
end end
# Will raise KeyError if any secret ENVs are missing
def ensure_env_available
roles.collect(&:env_file).each(&:to_s)
true
end
def to_h def to_h
{ {
roles: role_names, roles: role_names,

View File

@@ -124,9 +124,17 @@ class CliMainTest < CliTestCase
end end
test "deploy with missing secrets" do test "deploy with missing secrets" do
assert_raises(KeyError) do invoke_options = { "config_file" => "test/fixtures/deploy_with_secrets.yml", "version" => "999", "skip_hooks" => false }
run_command("deploy", config_file: "deploy_with_secrets")
end Kamal::Cli::Main.any_instance.expects(:invoke).with("kamal:cli:registry:login", [], invoke_options)
Kamal::Cli::Main.any_instance.expects(:invoke).with("kamal:cli:build:deliver", [], invoke_options)
Kamal::Cli::Main.any_instance.expects(:invoke).with("kamal:cli:traefik:boot", [], invoke_options)
Kamal::Cli::Main.any_instance.expects(:invoke).with("kamal:cli:healthcheck:perform", [], invoke_options)
Kamal::Cli::Main.any_instance.expects(:invoke).with("kamal:cli:app:stale_containers", [], invoke_options.merge(stop: true))
Kamal::Cli::Main.any_instance.expects(:invoke).with("kamal:cli:app:boot", [], invoke_options)
Kamal::Cli::Main.any_instance.expects(:invoke).with("kamal:cli:prune:all", [], invoke_options)
run_command("deploy", config_file: "deploy_with_secrets")
end end
test "redeploy" do test "redeploy" do

View File

@@ -128,14 +128,6 @@ class ConfigurationTest < ActiveSupport::TestCase
assert_equal "healthcheck-app", @config.healthcheck_service assert_equal "healthcheck-app", @config.healthcheck_service
end end
test "env with missing secret" do
assert_raises(KeyError) do
config = Kamal::Configuration.new(@deploy.tap { |c| c.merge!({
env: { "secret" => [ "PASSWORD" ] }
}) }).ensure_env_available
end
end
test "valid config" do test "valid config" do
assert @config.valid? assert @config.valid?
assert @config_with_roles.valid? assert @config_with_roles.valid?

View File

@@ -5,6 +5,7 @@ class MainTest < IntegrationTest
kamal :envify kamal :envify
assert_local_env_file "SECRET_TOKEN=1234" assert_local_env_file "SECRET_TOKEN=1234"
assert_remote_env_file "SECRET_TOKEN=1234\nCLEAR_TOKEN=4321" assert_remote_env_file "SECRET_TOKEN=1234\nCLEAR_TOKEN=4321"
remove_local_env_file
first_version = latest_app_version first_version = latest_app_version
@@ -64,6 +65,10 @@ class MainTest < IntegrationTest
assert_equal contents, deployer_exec("cat .env", capture: true) assert_equal contents, deployer_exec("cat .env", capture: true)
end end
def remove_local_env_file
deployer_exec("rm .env")
end
def assert_remote_env_file(contents) def assert_remote_env_file(contents)
assert_equal contents, docker_compose("exec vm1 cat /root/.kamal/env/roles/app-web.env", capture: true) assert_equal contents, docker_compose("exec vm1 cat /root/.kamal/env/roles/app-web.env", capture: true)
end end