Remove the healthcheck step
To speed up deployments, we'll remove the healthcheck step. This adds some risk to deployments for non-web roles - if they don't have a Docker healthcheck configured then the only check we do is if the container is running. If there is a bad image we might see the container running before it exits and deploy it. Previously the healthcheck step would have avoided this by ensuring a web container could boot and serve traffic first. To mitigate this, we'll add a deployment barrier. Until one of the primary role containers passes its healthcheck, we'll keep the barrier up and avoid stopping the containers on the non-primary roles. It the primary role container fails its healthcheck, we'll close the barrier and shut down the new containers on the waiting roles. We also have a new integration test to check we correctly handle a a broken image. This highlighted that SSHKit's default runner will stop at the first error it encounters. We'll now have a custom runner that waits for all threads to finish allowing them to clean up.
This commit is contained in:
@@ -99,6 +99,11 @@ class CommanderTest < ActiveSupport::TestCase
|
||||
assert_equal [ "workers" ], @kamal.roles_on("1.1.1.3").map(&:name)
|
||||
end
|
||||
|
||||
test "roles_on web comes first" do
|
||||
configure_with(:deploy_with_two_roles_one_host)
|
||||
assert_equal [ "web", "workers" ], @kamal.roles_on("1.1.1.1").map(&:name)
|
||||
end
|
||||
|
||||
test "default group strategy" do
|
||||
assert_empty @kamal.boot_strategy
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user