Merge pull request #499 from basecamp/env-only-needed-for-push

Remove the env check
This commit is contained in:
Donal McBreen
2023-10-30 08:22:56 +00:00
committed by GitHub
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,10 +124,18 @@ 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 }
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") run_command("deploy", config_file: "deploy_with_secrets")
end end
end
test "redeploy" do test "redeploy" do
invoke_options = { "config_file" => "test/fixtures/deploy_simple.yml", "version" => "999", "skip_hooks" => false } invoke_options = { "config_file" => "test/fixtures/deploy_simple.yml", "version" => "999", "skip_hooks" => false }

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