Files
dokku/plugins/builds/subcommands/cancel
Jose Diaz-Gonzalez 7d00e2c422 feat: implement builds:output
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.
2026-04-29 13:48:50 -04:00

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 "$@"