Merge pull request #580 from happyscribe/feat/no-web
Allow Kamal to run without traefik
This commit is contained in:
@@ -64,9 +64,19 @@ class CliHealthcheckTest < CliTestCase
|
||||
end
|
||||
assert_match "container not ready (unhealthy)", exception.message
|
||||
end
|
||||
|
||||
test "raises an exception if primary does not have traefik" do
|
||||
SSHKit::Backend::Abstract.any_instance.expects(:execute).never
|
||||
|
||||
exception = assert_raises do
|
||||
run_command("perform", config_file: "test/fixtures/deploy_workers_only.yml")
|
||||
end
|
||||
|
||||
assert_equal "The primary host is not configured to run Traefik", exception.message
|
||||
end
|
||||
|
||||
private
|
||||
def run_command(*command)
|
||||
stdouted { Kamal::Cli::Healthcheck.start([*command, "-c", "test/fixtures/deploy_with_accessories.yml"]) }
|
||||
def run_command(*command, config_file: "test/fixtures/deploy_with_accessories.yml")
|
||||
stdouted { Kamal::Cli::Healthcheck.start([*command, "-c", config_file]) }
|
||||
end
|
||||
end
|
||||
|
||||
@@ -122,6 +122,21 @@ class CliMainTest < CliTestCase
|
||||
refute_match /Running the post-deploy hook.../, output
|
||||
end
|
||||
end
|
||||
|
||||
test "deploy without healthcheck if primary host doesn't have traefik" do
|
||||
invoke_options = { "config_file" => "test/fixtures/deploy_workers_only.yml", "version" => "999", "skip_hooks" => false }
|
||||
|
||||
Kamal::Cli::Main.any_instance.expects(:invoke).with("kamal:cli:healthcheck:perform", [], invoke_options).never
|
||||
|
||||
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: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_workers_only")
|
||||
end
|
||||
|
||||
test "deploy with missing secrets" do
|
||||
invoke_options = { "config_file" => "test/fixtures/deploy_with_secrets.yml", "version" => "999", "skip_hooks" => false }
|
||||
|
||||
@@ -58,9 +58,9 @@ class ConfigurationTest < ActiveSupport::TestCase
|
||||
assert_equal [ "1.1.1.1", "1.1.1.2", "1.1.1.3" ], @config_with_roles.all_hosts
|
||||
end
|
||||
|
||||
test "primary web host" do
|
||||
assert_equal "1.1.1.1", @config.primary_web_host
|
||||
assert_equal "1.1.1.1", @config_with_roles.primary_web_host
|
||||
test "primary host" do
|
||||
assert_equal "1.1.1.1", @config.primary_host
|
||||
assert_equal "1.1.1.1", @config_with_roles.primary_host
|
||||
end
|
||||
|
||||
test "traefik hosts" do
|
||||
@@ -289,27 +289,23 @@ class ConfigurationTest < ActiveSupport::TestCase
|
||||
assert_equal "foo", Kamal::Configuration.new(@deploy.merge!(asset_path: "foo")).asset_path
|
||||
end
|
||||
|
||||
test "primary web role" do
|
||||
assert_equal "web", @config.primary_web_role
|
||||
test "primary role" do
|
||||
assert_equal "web", @config.primary_role
|
||||
|
||||
config = Kamal::Configuration.new(@deploy_with_roles.deep_merge({
|
||||
servers: { "alternate_web" => { "hosts" => [ "1.1.1.4", "1.1.1.5" ] , "traefik" => true } },
|
||||
primary_web_role: "alternate_web" } ))
|
||||
servers: { "alternate_web" => { "hosts" => [ "1.1.1.4", "1.1.1.5" ] } },
|
||||
primary_role: "alternate_web" } ))
|
||||
|
||||
assert_equal "alternate_web", config.primary_web_role
|
||||
assert_equal "1.1.1.4", config.primary_web_host
|
||||
|
||||
assert_equal "alternate_web", config.primary_role
|
||||
assert_equal "1.1.1.4", config.primary_host
|
||||
assert config.role(:alternate_web).primary?
|
||||
assert config.role(:alternate_web).running_traefik?
|
||||
end
|
||||
|
||||
test "primary web role no traefik" do
|
||||
test "primary role missing" do
|
||||
error = assert_raises(ArgumentError) do
|
||||
Kamal::Configuration.new(@deploy_with_roles.merge(primary_web_role: "workers"))
|
||||
end
|
||||
assert_match /workers needs to have traefik enabled/, error.message
|
||||
end
|
||||
|
||||
test "primary web role missing" do
|
||||
error = assert_raises(ArgumentError) do
|
||||
Kamal::Configuration.new(@deploy.merge(primary_web_role: "bar"))
|
||||
Kamal::Configuration.new(@deploy.merge(primary_role: "bar"))
|
||||
end
|
||||
assert_match /bar isn't defined/, error.message
|
||||
end
|
||||
|
||||
@@ -17,4 +17,4 @@ registry:
|
||||
server: registry.digitalocean.com
|
||||
username: user
|
||||
password: pw
|
||||
primary_web_role: web_tokyo
|
||||
primary_role: web_tokyo
|
||||
|
||||
12
test/fixtures/deploy_workers_only.yml
vendored
Normal file
12
test/fixtures/deploy_workers_only.yml
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
service: app
|
||||
image: dhh/app
|
||||
servers:
|
||||
workers:
|
||||
traefik: false
|
||||
hosts:
|
||||
- 1.1.1.1
|
||||
- 1.1.1.2
|
||||
primary_role: workers
|
||||
registry:
|
||||
username: user
|
||||
password: pw
|
||||
Reference in New Issue
Block a user