Merge pull request #598 from basecamp/fix-duplicate-role-env-vars
Fix duplicate role env vars
This commit is contained in:
@@ -239,7 +239,7 @@ class Kamal::Configuration::Role
|
||||
clear_app_env = config.env["secret"] ? Array(config.env["clear"]) : Array(config.env["clear"] || config.env)
|
||||
clear_role_env = specialized_env["secret"] ? Array(specialized_env["clear"]) : Array(specialized_env["clear"] || specialized_env)
|
||||
|
||||
new_env["clear"] = (clear_app_env + clear_role_env).uniq
|
||||
new_env["clear"] = clear_app_env.to_h.merge(clear_role_env.to_h)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -176,6 +176,34 @@ class ConfigurationRoleTest < ActiveSupport::TestCase
|
||||
ENV["REDIS_PASSWORD"] = nil
|
||||
end
|
||||
|
||||
test "env overwritten by role with secrets" do
|
||||
@deploy_with_roles[:env] = {
|
||||
"clear" => {
|
||||
"REDIS_URL" => "redis://a/b"
|
||||
},
|
||||
"secret" => [
|
||||
"REDIS_PASSWORD"
|
||||
]
|
||||
}
|
||||
|
||||
@deploy_with_roles[:servers]["workers"]["env"] = {
|
||||
"clear" => {
|
||||
"REDIS_URL" => "redis://c/d",
|
||||
},
|
||||
}
|
||||
|
||||
ENV["REDIS_PASSWORD"] = "secret456"
|
||||
|
||||
expected = <<~ENV
|
||||
REDIS_PASSWORD=secret456
|
||||
REDIS_URL=redis://c/d
|
||||
ENV
|
||||
|
||||
assert_equal expected, @config_with_roles.role(:workers).env_file.to_s
|
||||
ensure
|
||||
ENV["REDIS_PASSWORD"] = nil
|
||||
end
|
||||
|
||||
test "host_env_directory" do
|
||||
assert_equal ".kamal/env/roles", @config_with_roles.role(:workers).host_env_directory
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user