Better lock messages

- Debug verbosity commands
- Show lock status when we fail to acquire it
- Include lock acquire/release in runtime
This commit is contained in:
Donal McBreen
2023-05-09 14:17:58 +01:00
parent e9d838ec46
commit 5d33fb6c33
5 changed files with 37 additions and 27 deletions

View File

@@ -99,26 +99,32 @@ module Mrsk::Cli
end
def acquire_lock
say "Acquiring the deploy lock"
on(MRSK.primary_host) { execute *MRSK.lock.acquire("Automatic deploy lock", MRSK.config.version) }
raise_if_locked do
say "Acquiring the deploy lock...", :magenta
on(MRSK.primary_host) { execute *MRSK.lock.acquire("Automatic deploy lock", MRSK.config.version), verbosity: :debug }
end
MRSK.holding_lock = true
end
def release_lock
say "Releasing the deploy lock...", :magenta
on(MRSK.primary_host) { execute *MRSK.lock.release, verbosity: :debug }
MRSK.holding_lock = false
end
def raise_if_locked
yield
rescue SSHKit::Runner::ExecuteError => e
if e.message =~ /cannot create directory/
on(MRSK.primary_host) { execute *MRSK.lock.status }
on(MRSK.primary_host) { puts capture_with_debug(*MRSK.lock.status) }
raise LockError, "Deploy lock found"
else
raise e
end
end
def release_lock
say "Releasing the deploy lock"
on(MRSK.primary_host) { execute *MRSK.lock.release }
MRSK.holding_lock = false
end
def hold_lock_on_error
if MRSK.hold_lock_on_error?
yield