This still needs tightening to ensure we don't trigger this for normal git plugin commands - as well as anything that triggers a deploy - but works in a pinch.
38 lines
1.0 KiB
Bash
Executable File
38 lines
1.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -eo pipefail
|
|
[[ $DOKKU_TRACE ]] && set -x
|
|
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
|
|
|
cmd-builds-cancel() {
|
|
declare desc="cancel a running build for an app"
|
|
declare cmd="builds:cancel"
|
|
[[ "$1" == "$cmd" ]] && shift 1
|
|
declare APP="$1"
|
|
local APP_DEPLOY_LOCK_FILE PROCESS_ID PROCESS_GROUP_ID
|
|
verify_app_name "$APP"
|
|
|
|
local APP_DEPLOY_LOCK_FILE PROCESS_ID PROCESS_GROUP_ID
|
|
APP_DEPLOY_LOCK_FILE="$DOKKU_LIB_ROOT/data/apps/$APP/.deploy.lock"
|
|
if [[ ! -f "$APP_DEPLOY_LOCK_FILE" ]]; then
|
|
dokku_log_info1 "App not currently deploying"
|
|
return
|
|
fi
|
|
|
|
PROCESS_ID="$(cat "$APP_DEPLOY_LOCK_FILE")"
|
|
if [[ -z "$PROCESS_ID" ]]; then
|
|
dokku_log_info1 "No matching app deploy found"
|
|
return
|
|
fi
|
|
|
|
PROCESS_GROUP_ID="$(ps -o pgid= "$PROCESS_ID" || true)"
|
|
if [[ -z "$PROCESS_ID" ]]; then
|
|
dokku_log_info1 "Unable to find process group id for app deploy"
|
|
return
|
|
fi
|
|
|
|
dokku_log_info1 "Killing app deploy"
|
|
kill -quit -- "-${PROCESS_GROUP_ID}" && rm -f "$APP_DEPLOY_LOCK_FILE"
|
|
}
|
|
|
|
cmd-builds-cancel "$@"
|