Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion lib/kamal/configuration.rb
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ def initialize(raw_config, destination: nil, version: nil, validate: true)

# Eager load config to validate it, these are first as they have dependencies later on
@servers = Servers.new(config: self)
@registry = Registry.new(config: @raw_config, secrets: secrets)
@registry = Registry.new(config: @raw_config, secrets: secrets, skip_validation: skip_registry_validation?)

@accessories = @raw_config.accessories&.keys&.collect { |name| Accessory.new(name, config: self) } || []
@aliases = @raw_config.aliases&.keys&.to_h { |name| [ name, Alias.new(name, config: self) ] } || {}
Expand Down Expand Up @@ -378,4 +378,8 @@ def git_version
raise "Can't use commit hash as version, no git repository found in #{Dir.pwd}"
end
end

def skip_registry_validation?
true if raw_config.registry&.dig("skip_validation") == true
end
end
4 changes: 2 additions & 2 deletions lib/kamal/configuration/registry.rb
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
class Kamal::Configuration::Registry
include Kamal::Configuration::Validation

def initialize(config:, secrets:, context: "registry")
def initialize(config:, secrets:, context: "registry", skip_validation: false)
@registry_config = config["registry"] || {}
@secrets = secrets
validate! registry_config, context: context, with: Kamal::Configuration::Validator::Registry
validate! registry_config, context: context, with: Kamal::Configuration::Validator::Registry unless skip_validation
end

def server
Expand Down
18 changes: 18 additions & 0 deletions test/configuration_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,24 @@ class ConfigurationTest < ActiveSupport::TestCase
end
end

test "invalid registry config still passes validation when skip_validation is true" do
assert_nothing_raised do
deploy_skip_validation = @deploy.dup.merge(
registry: { "skip_validation" => true }
)
Kamal::Configuration.new(deploy_skip_validation)
end
end

test "invalid registry config still passes validation when skip_validation is false" do
assert_raises(Kamal::ConfigurationError) do
deploy_fail_validation = @deploy.dup.merge(
registry: { "skip_validation" => false }
)
Kamal::Configuration.new(deploy_fail_validation)
end
end

test "image uses service name if registry is local" do
assert_equal "app", Kamal::Configuration.new(@deploy.tap {
_1[:registry] = { "server" => "localhost:5000" }
Expand Down