Add a pre-connect hook

This can be used for hooks that should run before connecting to remote
hosts. An example use case is pre-warming DNS.
This commit is contained in:
Donal McBreen
2023-05-24 11:39:48 +01:00
parent 483b893018
commit 66f9ce0e90
8 changed files with 75 additions and 9 deletions

View File

@@ -23,6 +23,7 @@ class CliMainTest < CliTestCase
Mrsk::Commands::Hook.any_instance.stubs(:hook_exists?).returns(true)
run_command("deploy").tap do |output|
assert_match /Running the pre-connect hook.../, output
assert_match /Log into image registry/, output
assert_match /Build and push app image/, output
assert_match /Ensure Traefik is running/, output

View File

@@ -0,0 +1,8 @@
#!/bin/sh
echo "About to lock..."
if [ "$MRSK_HOSTS" != "vm1,vm2" ]; then
echo "Expected hosts to be 'vm1,vm2', got $MRSK_HOSTS"
exit 1
fi
mkdir -p /tmp/${TEST_ID} && touch /tmp/${TEST_ID}/pre-connect

View File

@@ -8,16 +8,16 @@ class MainTest < IntegrationTest
mrsk :deploy
assert_app_is_up version: first_version
assert_hooks_ran "pre-build", "post-deploy"
assert_hooks_ran "pre-connect", "pre-build", "post-deploy"
second_version = update_app_rev
mrsk :redeploy
assert_app_is_up version: second_version
assert_hooks_ran "pre-build", "post-deploy"
assert_hooks_ran "pre-connect", "pre-build", "post-deploy"
mrsk :rollback, first_version
assert_hooks_ran "post-deploy"
assert_hooks_ran "pre-connect", "post-deploy"
assert_app_is_up version: first_version
details = mrsk :details, capture: true