tests: run mvdan/shfmt on test runs
While I do not agree with _every_ style change, this will force Dokku to have consistent formatting across all shell scripts, which is arguably a Good Thing™. The command used to reprocess everything is: ```shell shfmt -l -bn -ci -i 2 -w . ```
This commit is contained in:
@@ -33,7 +33,8 @@
|
||||
# TIMEOUT=60 # Timeout after a minute
|
||||
# ATTEMPTS=10 # retry checks 10 times
|
||||
#
|
||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
set -eo pipefail
|
||||
[[ $DOKKU_TRACE ]] && set -x
|
||||
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
||||
source "$PLUGIN_AVAILABLE_PATH/checks/functions"
|
||||
source "$PLUGIN_AVAILABLE_PATH/config/functions"
|
||||
@@ -41,7 +42,11 @@ source "$PLUGIN_AVAILABLE_PATH/config/functions"
|
||||
scheduler-docker-local-check-deploy() {
|
||||
declare desc="scheduler-docker-local check-deploy plugin trigger"
|
||||
local trigger="scheduler-docker-local-check-deploy"
|
||||
local APP="$1"; local DOKKU_APP_CONTAINER_ID="$2"; local DOKKU_APP_CONTAINER_TYPE="$3"; local DOKKU_APP_LISTEN_PORT="$4"; local DOKKU_APP_LISTEN_IP="$5"
|
||||
local APP="$1"
|
||||
local DOKKU_APP_CONTAINER_ID="$2"
|
||||
local DOKKU_APP_CONTAINER_TYPE="$3"
|
||||
local DOKKU_APP_LISTEN_PORT="$4"
|
||||
local DOKKU_APP_LISTEN_IP="$5"
|
||||
|
||||
local DOKKU_SCHEDULER=$(get_app_scheduler "$APP")
|
||||
if [[ "$DOKKU_SCHEDULER" != "docker-local" ]]; then
|
||||
@@ -49,13 +54,13 @@ scheduler-docker-local-check-deploy() {
|
||||
fi
|
||||
|
||||
if [[ -z "$DOKKU_APP_LISTEN_PORT" ]] && [[ -f "$DOKKU_ROOT/$APP/PORT" ]]; then
|
||||
local DOKKU_APP_LISTEN_PORT=$(< "$DOKKU_ROOT/$APP/PORT")
|
||||
local DOKKU_APP_LISTEN_PORT=$(<"$DOKKU_ROOT/$APP/PORT")
|
||||
fi
|
||||
if [[ -z "$DOKKU_APP_LISTEN_IP" ]] && [[ -f "$DOKKU_ROOT/$APP/IP" ]]; then
|
||||
local DOKKU_APP_LISTEN_IP=$(< "$DOKKU_ROOT/$APP/IP")
|
||||
local DOKKU_APP_LISTEN_IP=$(<"$DOKKU_ROOT/$APP/IP")
|
||||
fi
|
||||
if [[ -z "$DOKKU_APP_CONTAINER_ID" ]]; then
|
||||
local DOKKU_APP_CIDS=( $(get_app_container_ids "$APP") )
|
||||
local DOKKU_APP_CIDS=($(get_app_container_ids "$APP"))
|
||||
local DOKKU_APP_CONTAINER_ID=${DOKKU_APP_CIDS[0]}
|
||||
fi
|
||||
|
||||
@@ -80,18 +85,18 @@ scheduler-docker-local-check-deploy() {
|
||||
# after successfully copying the file. Thus, we suppress stderr.
|
||||
# ref: https://github.com/dotcloud/docker/issues/3986
|
||||
local CHECK_DEPLOY_TMP_WORK_DIR=$(mktemp -d /tmp/dokku_CHECKS.XXXXX)
|
||||
docker cp "$DOKKU_APP_CONTAINER_ID:/app/CHECKS" "$CHECK_DEPLOY_TMP_WORK_DIR" 2> /dev/null || true
|
||||
docker cp "$DOKKU_APP_CONTAINER_ID:/app/CHECKS" "$CHECK_DEPLOY_TMP_WORK_DIR" 2>/dev/null || true
|
||||
|
||||
local FILENAME=${CHECK_DEPLOY_TMP_WORK_DIR}/CHECKS
|
||||
|
||||
checks_check_deploy_cleanup() {
|
||||
declare desc="cleans up CHECK_DEPLOY_TMP_WORK_DIR and print container output"
|
||||
local id="$1"
|
||||
rm -rf "$CHECK_DEPLOY_TMP_WORK_DIR" &> /dev/null || true
|
||||
rm -rf "$CHECK_DEPLOY_TMP_WORK_DIR" &>/dev/null || true
|
||||
if [[ $id ]]; then
|
||||
dokku_log_info2_quiet "$APP $DOKKU_APP_CONTAINER_TYPE container output:"
|
||||
dokku_log_info2_quiet "$APP $DOKKU_APP_CONTAINER_TYPE container output:"
|
||||
dokku_container_log_verbose_quiet "$id"
|
||||
dokku_log_info2_quiet "end $APP $DOKKU_APP_CONTAINER_TYPE container output"
|
||||
dokku_log_info2_quiet "end $APP $DOKKU_APP_CONTAINER_TYPE container output"
|
||||
fi
|
||||
}
|
||||
trap 'checks_check_deploy_cleanup $DOKKU_APP_CONTAINER_ID' RETURN INT TERM EXIT
|
||||
@@ -106,7 +111,7 @@ scheduler-docker-local-check-deploy() {
|
||||
dokku_log_verbose "Non web container detected: Running default container check..."
|
||||
fi
|
||||
|
||||
rm -rf "$CHECK_DEPLOY_TMP_WORK_DIR" &> /dev/null || true
|
||||
rm -rf "$CHECK_DEPLOY_TMP_WORK_DIR" &>/dev/null || true
|
||||
|
||||
# simple default check to see if the container stuck around
|
||||
local DOKKU_DEFAULT_CHECKS_WAIT="${DOKKU_DEFAULT_CHECKS_WAIT:-10}"
|
||||
@@ -126,34 +131,34 @@ scheduler-docker-local-check-deploy() {
|
||||
|
||||
# ensure CHECKS file has trailing newline
|
||||
if [[ "$(tail -c1 "$FILENAME")" != "" ]]; then
|
||||
echo "" >> "$FILENAME"
|
||||
echo "" >>"$FILENAME"
|
||||
fi
|
||||
|
||||
# Reads name/value pairs, sets the WAIT and TIMEOUT variables
|
||||
exec < "$FILENAME"
|
||||
local line; local NAME; local VALUE
|
||||
exec <"$FILENAME"
|
||||
local line
|
||||
local NAME
|
||||
local VALUE
|
||||
while read -r line; do
|
||||
line=$(strip_inline_comments "$line")
|
||||
# Name/value pair
|
||||
if [[ "$line" =~ ^.+= ]]; then
|
||||
NAME=${line%=*}
|
||||
VALUE=${line#*=}
|
||||
[[ "$NAME" = "WAIT" ]] && local WAIT=$VALUE
|
||||
[[ "$NAME" = "TIMEOUT" ]] && local TIMEOUT=$VALUE
|
||||
[[ "$NAME" = "ATTEMPTS" ]] && local ATTEMPTS=$VALUE
|
||||
[[ "$NAME" == "WAIT" ]] && local WAIT=$VALUE
|
||||
[[ "$NAME" == "TIMEOUT" ]] && local TIMEOUT=$VALUE
|
||||
[[ "$NAME" == "ATTEMPTS" ]] && local ATTEMPTS=$VALUE
|
||||
fi
|
||||
done
|
||||
|
||||
local ATTEMPT=0
|
||||
|
||||
until [[ $SUCCESS == 1 || $ATTEMPT -ge $ATTEMPTS ]]
|
||||
do
|
||||
until [[ $SUCCESS == 1 || $ATTEMPT -ge $ATTEMPTS ]]; do
|
||||
local FAILEDCHECKS=0
|
||||
local ATTEMPT=$(( ATTEMPT + 1 ))
|
||||
local ATTEMPT=$((ATTEMPT + 1))
|
||||
dokku_log_info1 "Attempt $ATTEMPT/$ATTEMPTS Waiting for $WAIT seconds ..."
|
||||
sleep "$WAIT"
|
||||
|
||||
|
||||
# -q Do not use .curlrc (must come first)
|
||||
# --compressed Test compression handled correctly
|
||||
# --fail Fail on server errors (4xx, 5xx)
|
||||
@@ -167,7 +172,7 @@ scheduler-docker-local-check-deploy() {
|
||||
local CURL_OPTIONS+=" -H X-Forwarded-Proto:https"
|
||||
fi
|
||||
|
||||
exec < "$FILENAME"
|
||||
exec <"$FILENAME"
|
||||
local CHECK_URL
|
||||
local EXPECTED
|
||||
while read -r CHECK_URL EXPECTED; do
|
||||
@@ -216,26 +221,26 @@ scheduler-docker-local-check-deploy() {
|
||||
# OUTPUT contains the HTTP response
|
||||
if [[ ! "$OUTPUT" =~ $EXPECTED ]]; then
|
||||
dokku_log_warn "$LOG_URL: expected to but did not find: \"$EXPECTED\""
|
||||
local FAILEDCHECKS=$(( FAILEDCHECKS + 1 ))
|
||||
local FAILEDCHECKS=$((FAILEDCHECKS + 1))
|
||||
fi
|
||||
else
|
||||
# Failed to connect/no response, OUTPUT contains error message
|
||||
dokku_log_warn "$OUTPUT"
|
||||
local FAILEDCHECKS=$(( FAILEDCHECKS + 1 ))
|
||||
local FAILEDCHECKS=$((FAILEDCHECKS + 1))
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ $FAILEDCHECKS -gt 0 ]]; then
|
||||
dokku_log_warn "Check attempt $ATTEMPT/$ATTEMPTS failed."
|
||||
local SUCCESS=0
|
||||
dokku_log_warn "Check attempt $ATTEMPT/$ATTEMPTS failed."
|
||||
local SUCCESS=0
|
||||
else
|
||||
local SUCCESS=1
|
||||
local SUCCESS=1
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ $FAILEDCHECKS -gt 0 ]]; then
|
||||
dokku_log_fail "Could not start due to $FAILEDCHECKS failed checks."
|
||||
exit 1
|
||||
dokku_log_fail "Could not start due to $FAILEDCHECKS failed checks."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
trap - EXIT
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
set -eo pipefail
|
||||
[[ $DOKKU_TRACE ]] && set -x
|
||||
source "$PLUGIN_AVAILABLE_PATH/scheduler-docker-local/internal-functions"
|
||||
|
||||
case "$1" in
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
set -eo pipefail
|
||||
[[ $DOKKU_TRACE ]] && set -x
|
||||
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
||||
source "$PLUGIN_AVAILABLE_PATH/config/functions"
|
||||
|
||||
scheduler-docker-local-core-post-deploy() {
|
||||
declare desc="scheduler-docker-local core-post-deploy state cleanup"
|
||||
declare trigger="scheduler-docker-local core-post-deploy"
|
||||
declare APP="$1";
|
||||
declare APP="$1"
|
||||
local APP_ROOT="$DOKKU_ROOT/$APP"
|
||||
|
||||
local DOKKU_SCHEDULER=$(get_app_scheduler "$APP")
|
||||
@@ -19,7 +20,7 @@ scheduler-docker-local-core-post-deploy() {
|
||||
|
||||
local CONTAINER_FILE
|
||||
for CONTAINER_FILE in $CONTAINER_FILES; do
|
||||
local CONTAINER_TYPE="$(awk -F '.' '{ print $2 }' <<< "$CONTAINER_FILE")"
|
||||
local CONTAINER_TYPE="$(awk -F '.' '{ print $2 }' <<<"$CONTAINER_FILE")"
|
||||
if [[ "$(is_val_in_list "$CONTAINER_TYPE" "$PROCTYPES" " ")" == "false" ]]; then
|
||||
dokku_log_info1 "Container type ($CONTAINER_TYPE) is no longer defined. Removing state"
|
||||
local IP_FILE="${CONTAINER_FILE//CONTAINER/IP}"
|
||||
@@ -33,7 +34,7 @@ scheduler-docker-local-core-post-deploy() {
|
||||
for container in $APP_ROOT/CONTAINER.*; do
|
||||
local DYNO=$(echo "$container" | sed -r 's/.*CONTAINER\.(.*)/\1/') || true
|
||||
local NAME="$APP.$DYNO"
|
||||
local CURRENT_CONTAINER_ID="$(< "$container")"
|
||||
local CURRENT_CONTAINER_ID="$(<"$container")"
|
||||
# TODO: Ensure these are from the current service
|
||||
local PREVIOUS_CIDS=$(docker ps -a -q -f name="^.?$NAME\$" | xargs) || true
|
||||
if [[ -n $PREVIOUS_CIDS ]]; then
|
||||
@@ -46,7 +47,7 @@ scheduler-docker-local-core-post-deploy() {
|
||||
if [[ "$PREVIOUS_CONTAINER_STATUS" != "dead" ]]; then
|
||||
local CONTAINER_DATE_NAME="$NAME.$(date +%s)"
|
||||
dokku_log_info2_quiet "Renaming container ($cid) ${NAME} to $CONTAINER_DATE_NAME"
|
||||
docker rename "$NAME" "$CONTAINER_DATE_NAME" > /dev/null 2>&1 || dokku_log_warn "Unable to rename container"
|
||||
docker rename "$NAME" "$CONTAINER_DATE_NAME" >/dev/null 2>&1 || dokku_log_warn "Unable to rename container"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
@@ -54,7 +55,7 @@ scheduler-docker-local-core-post-deploy() {
|
||||
local CURRENT_NAME=$(docker inspect -f '{{.Name}}' "$ID" | tr -d /)
|
||||
if [[ -n "$CURRENT_NAME" ]]; then
|
||||
dokku_log_info2_quiet "Renaming container (${ID:0:12}) $CURRENT_NAME to $NAME"
|
||||
docker rename "$CURRENT_NAME" "$NAME" > /dev/null
|
||||
docker rename "$CURRENT_NAME" "$NAME" >/dev/null
|
||||
fi
|
||||
done
|
||||
shopt -u nullglob
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
set -eo pipefail
|
||||
[[ $DOKKU_TRACE ]] && set -x
|
||||
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
||||
source "$PLUGIN_CORE_AVAILABLE_PATH/common/property-functions"
|
||||
|
||||
@@ -15,8 +16,8 @@ scheduler-docker-local-install() {
|
||||
|
||||
DOKKU_PATH="$(which dokku)"
|
||||
|
||||
if [[ $(systemctl 2> /dev/null) =~ -\.mount ]]; then
|
||||
cat<<EOF > /etc/systemd/system/dokku-retire.service
|
||||
if [[ $(systemctl 2>/dev/null) =~ -\.mount ]]; then
|
||||
cat <<EOF >/etc/systemd/system/dokku-retire.service
|
||||
[Unit]
|
||||
Description=Dokku retire service
|
||||
Requires=docker.service
|
||||
@@ -31,24 +32,24 @@ ExecStart=$DOKKU_PATH ps:restore
|
||||
WantedBy=docker.service
|
||||
EOF
|
||||
|
||||
cat<<EOF > /etc/systemd/system/dokku-retire.timer
|
||||
cat <<EOF >/etc/systemd/system/dokku-retire.timer
|
||||
[Unit]
|
||||
Description=Run dokku-retire.service every 5 minutes
|
||||
|
||||
[Timer]
|
||||
OnCalendar=*:0/5
|
||||
EOF
|
||||
if command -v systemctl &>/dev/null; then
|
||||
systemctl reenable dokku-redeploy
|
||||
fi
|
||||
else
|
||||
cat<<EOF > /etc/cron.d/dokku-retire
|
||||
if command -v systemctl &>/dev/null; then
|
||||
systemctl reenable dokku-redeploy
|
||||
fi
|
||||
else
|
||||
cat <<EOF >/etc/cron.d/dokku-retire
|
||||
PATH=/usr/local/bin:/usr/bin:/bin
|
||||
SHELL=/bin/bash
|
||||
|
||||
*/5 * * * * $DOKKU_SYSTEM_USER $DOKKU_PATH ps:retire >> /var/log/dokku/retire.log 2>&1
|
||||
EOF
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
scheduler-docker-local-install "$@"
|
||||
|
||||
@@ -2,7 +2,8 @@
|
||||
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
||||
source "$PLUGIN_CORE_AVAILABLE_PATH/common/property-functions"
|
||||
source "$PLUGIN_AVAILABLE_PATH/config/functions"
|
||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
set -eo pipefail
|
||||
[[ $DOKKU_TRACE ]] && set -x
|
||||
|
||||
cmd-scheduler-docker-local-report() {
|
||||
declare desc="displays a scheduler-docker-local report for one or more apps"
|
||||
@@ -45,7 +46,8 @@ cmd-scheduler-docker-local-report-single() {
|
||||
dokku_log_verbose "$(printf "%-30s %-25s" "${key^}" "${flag#*: }")"
|
||||
done
|
||||
else
|
||||
local match=false; local value_exists=false
|
||||
local match=false
|
||||
local value_exists=false
|
||||
for flag in "${flag_map[@]}"; do
|
||||
valid_flags="${valid_flags} $(echo "$flag" | cut -d':' -f1)"
|
||||
if [[ "$flag" == "${INFO_FLAG}:"* ]]; then
|
||||
@@ -65,14 +67,14 @@ cmd-scheduler-docker-local-report-single() {
|
||||
|
||||
scheduler_docker_local_help_content_func() {
|
||||
declare desc="return scheduler-docker-local plugin help content"
|
||||
cat<<help_content
|
||||
cat <<help_content
|
||||
scheduler-docker-local:report [<app>] [<flag>], Displays a scheduler-docker-local report for one or more apps
|
||||
scheduler-docker-local:set <app> <property> (<value>), Set or clear a scheduler-docker-local property for an app
|
||||
help_content
|
||||
}
|
||||
|
||||
cmd-scheduler-docker-local-help() {
|
||||
if [[ $1 = "scheduler-docker-local:help" ]] ; then
|
||||
if [[ $1 == "scheduler-docker-local:help" ]]; then
|
||||
echo -e 'Usage: dokku scheduler-docker-local[:COMMAND]'
|
||||
echo ''
|
||||
echo 'Manages the scheduler-docker-local integration for an app.'
|
||||
@@ -83,7 +85,7 @@ cmd-scheduler-docker-local-help() {
|
||||
elif [[ $(ps -o command= $PPID) == *"--all"* ]]; then
|
||||
scheduler_docker_local_help_content_func
|
||||
else
|
||||
cat<<help_desc
|
||||
cat <<help_desc
|
||||
scheduler-docker-local, Manages the scheduler-docker-local integration for an app
|
||||
help_desc
|
||||
fi
|
||||
@@ -92,7 +94,7 @@ help_desc
|
||||
fn-scheduler-docker-local-retire-container() {
|
||||
declare APP="$1" CID="$2" DEAD_TIME="$3"
|
||||
|
||||
if ! docker inspect "${CID}" > /dev/null; then
|
||||
if ! docker inspect "${CID}" >/dev/null; then
|
||||
return
|
||||
fi
|
||||
|
||||
@@ -104,8 +106,8 @@ fn-scheduler-docker-local-retire-container() {
|
||||
# on to the next.
|
||||
# shellcheck disable=SC2086
|
||||
docker stop $DOCKER_STOP_TIME_ARG "$CID" \
|
||||
|| docker kill "$CID" \
|
||||
|| dokku_log_warn "Unable to kill container ${CID}"
|
||||
|| docker kill "$CID" \
|
||||
|| dokku_log_warn "Unable to kill container ${CID}"
|
||||
|
||||
if ! docker kill "$CID"; then
|
||||
dokku_log_warn "Unable to kill container ${CID}"
|
||||
@@ -119,5 +121,5 @@ fn-scheduler-docker-local-register-retired-container() {
|
||||
|
||||
CURRENT_TIME="$(date +%s)"
|
||||
DEAD_TIME=$((CURRENT_TIME + WAIT))
|
||||
echo "${APP} ${CID} ${DEAD_TIME}" >> "${DEAD_CONTAINER_FILE}"
|
||||
echo "${APP} ${CID} ${DEAD_TIME}" >>"${DEAD_CONTAINER_FILE}"
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
set -eo pipefail
|
||||
[[ $DOKKU_TRACE ]] && set -x
|
||||
|
||||
scheduler-docker-local-post-app-clone-setup() {
|
||||
declare desc="removes docker-local files when setting up a clone"
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
set -eo pipefail
|
||||
[[ $DOKKU_TRACE ]] && set -x
|
||||
|
||||
scheduler-docker-local-post-create() {
|
||||
declare desc="scheduler-docker-local post-create plugin trigger"
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
set -eo pipefail
|
||||
[[ $DOKKU_TRACE ]] && set -x
|
||||
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
||||
source "$PLUGIN_AVAILABLE_PATH/config/functions"
|
||||
|
||||
@@ -20,7 +21,7 @@ scheduler-docker-local-post-delete() {
|
||||
local DOKKU_APP_CIDS=$(docker ps -a --no-trunc | egrep "dokku/${APP}:" | awk '{ print $1 }' | xargs)
|
||||
if [[ -n "$DOKKU_APP_CIDS" ]]; then
|
||||
# shellcheck disable=SC2086
|
||||
docker rm -f $DOKKU_APP_CIDS > /dev/null 2>&1 || true
|
||||
docker rm -f $DOKKU_APP_CIDS >/dev/null 2>&1 || true
|
||||
fi
|
||||
|
||||
# shellcheck disable=SC2046
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
set -eo pipefail
|
||||
[[ $DOKKU_TRACE ]] && set -x
|
||||
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
||||
source "$PLUGIN_CORE_AVAILABLE_PATH/common/property-functions"
|
||||
source "$PLUGIN_AVAILABLE_PATH/config/functions"
|
||||
@@ -27,7 +28,7 @@ scheduler-docker-local-pre-deploy() {
|
||||
CONTAINER_PATHS=$(echo "$APP_PATHS" | awk -F ':' '{ print $2 }' | xargs)
|
||||
DOCKER_ARGS=$(: | plugn trigger docker-args-deploy "$APP" "$IMAGE_TAG")
|
||||
# strip --restart args from DOCKER_ARGS
|
||||
DOCKER_ARGS=$(sed -e "s/--restart=[[:graph:]]\+[[:blank:]]\?//g" <<< "$DOCKER_ARGS")
|
||||
DOCKER_ARGS=$(sed -e "s/--restart=[[:graph:]]\+[[:blank:]]\?//g" <<<"$DOCKER_ARGS")
|
||||
eval "ARG_ARRAY=($DOCKER_ARGS)"
|
||||
fi
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
set -eo pipefail
|
||||
[[ $DOKKU_TRACE ]] && set -x
|
||||
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
||||
|
||||
scheduler-docker-local-pre-restore() {
|
||||
@@ -13,7 +14,7 @@ scheduler-docker-local-pre-restore() {
|
||||
|
||||
# delete all "old" containers
|
||||
# shellcheck disable=SC2046
|
||||
docker rm $(docker ps --format "{{.Names}}" -a -f "label=$DOKKU_CONTAINER_LABEL" -q | grep -E '(.+\..+\.[0-9]+\.[0-9]+$)') &> /dev/null || true
|
||||
docker rm $(docker ps --format "{{.Names}}" -a -f "label=$DOKKU_CONTAINER_LABEL" -q | grep -E '(.+\..+\.[0-9]+\.[0-9]+$)') &>/dev/null || true
|
||||
}
|
||||
|
||||
scheduler-docker-local-pre-restore "$@"
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
source "$PLUGIN_AVAILABLE_PATH/scheduler-docker-local/internal-functions"
|
||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
set -eo pipefail
|
||||
[[ $DOKKU_TRACE ]] && set -x
|
||||
|
||||
cmd-scheduler-docker-local-report-single "$@"
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
set -eo pipefail
|
||||
[[ $DOKKU_TRACE ]] && set -x
|
||||
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
||||
source "$PLUGIN_AVAILABLE_PATH/checks/functions"
|
||||
source "$PLUGIN_AVAILABLE_PATH/config/functions"
|
||||
@@ -31,7 +32,10 @@ scheduler-docker-local-scheduler-deploy() {
|
||||
DOKKU_DOCKER_STOP_TIMEOUT="$(config_get "$APP" DOKKU_DOCKER_STOP_TIMEOUT || true)"
|
||||
[[ $DOKKU_DOCKER_STOP_TIMEOUT ]] && DOCKER_STOP_TIME_ARG="--time=${DOKKU_DOCKER_STOP_TIMEOUT}"
|
||||
|
||||
local line; local PROC_TYPE; local PROC_COUNT; local CONTAINER_INDEX
|
||||
local line
|
||||
local PROC_TYPE
|
||||
local PROC_COUNT
|
||||
local CONTAINER_INDEX
|
||||
while read -r line || [[ -n "$line" ]]; do
|
||||
[[ "$line" =~ ^#.* ]] && continue
|
||||
line="$(strip_inline_comments "$line")"
|
||||
@@ -45,14 +49,16 @@ scheduler-docker-local-scheduler-deploy() {
|
||||
for cid in $proctype_oldids; do
|
||||
dokku_log_info2 "stopping $APP.$PROC_TYPE ($cid)"
|
||||
# shellcheck disable=SC2086
|
||||
docker stop $DOCKER_STOP_TIME_ARG "$cid" &> /dev/null
|
||||
docker stop $DOCKER_STOP_TIME_ARG "$cid" &>/dev/null
|
||||
# remove cid from oldids to skip the old container finish processing
|
||||
oldids="$(remove_val_from_list "$cid" "$oldids" " ")"
|
||||
done
|
||||
fi
|
||||
|
||||
while [[ $CONTAINER_INDEX -le $PROC_COUNT ]]; do
|
||||
local cid=""; local port=""; local ipaddr=""
|
||||
local cid=""
|
||||
local port=""
|
||||
local ipaddr=""
|
||||
local DOKKU_CONTAINER_ID_FILE="$DOKKU_ROOT/$APP/CONTAINER.$PROC_TYPE.$CONTAINER_INDEX"
|
||||
|
||||
# start the app
|
||||
@@ -100,8 +106,8 @@ scheduler-docker-local-scheduler-deploy() {
|
||||
declare desc="wrapper function to kill newly started app container"
|
||||
declare CID="$1" PROC_TYPE="$2" CONTAINER_INDEX="$3"
|
||||
mkdir -p "${DOKKU_LIB_ROOT}/data/scheduler-docker-local/$APP"
|
||||
echo "${CID} ${PROC_TYPE}.${CONTAINER_INDEX}" >> "${DOKKU_LIB_ROOT}/data/scheduler-docker-local/$APP/failed-containers"
|
||||
docker inspect "$CID" &> /dev/null && docker stop "$CID" > /dev/null && docker kill "$CID" &> /dev/null
|
||||
echo "${CID} ${PROC_TYPE}.${CONTAINER_INDEX}" >>"${DOKKU_LIB_ROOT}/data/scheduler-docker-local/$APP/failed-containers"
|
||||
docker inspect "$CID" &>/dev/null && docker stop "$CID" >/dev/null && docker kill "$CID" &>/dev/null
|
||||
trap - INT TERM EXIT
|
||||
kill -9 $$
|
||||
}
|
||||
@@ -112,17 +118,17 @@ scheduler-docker-local-scheduler-deploy() {
|
||||
dokku_log_info1 "Attempting pre-flight checks"
|
||||
plugn trigger check-deploy "$APP" "$cid" "$PROC_TYPE" "$port" "$ipaddr"
|
||||
fi
|
||||
trap - INT TERM EXIT
|
||||
trap - INT TERM EXIT
|
||||
|
||||
# now using the new container
|
||||
[[ -n "$cid" ]] && echo "$cid" > "$DOKKU_CONTAINER_ID_FILE"
|
||||
[[ -n "$cid" ]] && echo "$cid" >"$DOKKU_CONTAINER_ID_FILE"
|
||||
[[ -n "$ipaddr" ]] && plugn trigger network-write-ipaddr "$APP" "$PROC_TYPE" "$CONTAINER_INDEX" "$ipaddr"
|
||||
[[ -n "$port" ]] && plugn trigger network-write-port "$APP" "$PROC_TYPE" "$CONTAINER_INDEX" "$port"
|
||||
|
||||
# cleanup pre-migration files
|
||||
rm -f "$DOKKU_ROOT/$APP/CONTAINER" "$DOKKU_ROOT/$APP/IP" "$DOKKU_ROOT/$APP/PORT"
|
||||
|
||||
local CONTAINER_INDEX=$(( CONTAINER_INDEX + 1 ))
|
||||
local CONTAINER_INDEX=$((CONTAINER_INDEX + 1))
|
||||
done
|
||||
# cleanup when we scale down
|
||||
if [[ "$PROC_COUNT" == 0 ]]; then
|
||||
@@ -135,7 +141,7 @@ scheduler-docker-local-scheduler-deploy() {
|
||||
cd "$DOKKU_ROOT/$APP"
|
||||
find . -maxdepth 1 -name "$container_state_filetype.$PROC_TYPE.*" -printf "%f\n" | sort -t . -k 3 -n | tail -n +$CONTAINER_IDX_OFFSET | xargs rm -f
|
||||
done
|
||||
done < "$DOKKU_SCALE_FILE"
|
||||
done <"$DOKKU_SCALE_FILE"
|
||||
|
||||
dokku_log_info1 "Running post-deploy"
|
||||
plugn trigger core-post-deploy "$APP" "$port" "$ipaddr" "$IMAGE_TAG"
|
||||
@@ -168,10 +174,11 @@ scheduler-docker-local-scheduler-deploy() {
|
||||
# on to the next.
|
||||
# shellcheck disable=SC2086
|
||||
docker stop $DOCKER_STOP_TIME_ARG "$oldid" \
|
||||
|| docker kill "$oldid" \
|
||||
|| plugn trigger retire-container-failed "$APP" "$oldid" # plugin trigger for event logging
|
||||
|| docker kill "$oldid" \
|
||||
|| plugn trigger retire-container-failed "$APP" "$oldid" # plugin trigger for event logging
|
||||
done
|
||||
) & disown -a
|
||||
) &
|
||||
disown -a
|
||||
# Use trap since disown/nohup don't seem to keep child alive
|
||||
# Give child process just enough time to set the traps
|
||||
sleep 0.1
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
set -eo pipefail
|
||||
[[ $DOKKU_TRACE ]] && set -x
|
||||
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
||||
|
||||
scheduler-docker-local-scheduler-docker-cleanup() {
|
||||
@@ -13,15 +14,15 @@ scheduler-docker-local-scheduler-docker-cleanup() {
|
||||
|
||||
# delete all non-running containers
|
||||
# shellcheck disable=SC2046
|
||||
docker rm $(docker ps -a -f "status=exited" -f "label=$DOKKU_CONTAINER_LABEL" -q) &> /dev/null || true
|
||||
docker rm $(docker ps -a -f "status=exited" -f "label=$DOKKU_CONTAINER_LABEL" -q) &>/dev/null || true
|
||||
|
||||
# delete all dead containers
|
||||
# shellcheck disable=SC2046
|
||||
docker rm $(docker ps -a -f "status=dead" -f "label=$DOKKU_CONTAINER_LABEL" -q) &> /dev/null || true
|
||||
docker rm $(docker ps -a -f "status=dead" -f "label=$DOKKU_CONTAINER_LABEL" -q) &>/dev/null || true
|
||||
|
||||
# delete unused images
|
||||
# shellcheck disable=SC2046
|
||||
docker rmi $(docker images -f 'dangling=true' -q) &> /dev/null &
|
||||
docker rmi $(docker images -f 'dangling=true' -q) &>/dev/null &
|
||||
}
|
||||
|
||||
scheduler-docker-local-scheduler-docker-cleanup "$@"
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
set -eo pipefail
|
||||
[[ $DOKKU_TRACE ]] && set -x
|
||||
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
||||
source "$PLUGIN_AVAILABLE_PATH/config/functions"
|
||||
|
||||
@@ -14,7 +15,7 @@ scheduler-docker-local-scheduler-inspect() {
|
||||
|
||||
local TMP_INSPECT_CMD=$(mktemp "/tmp/${FUNCNAME[0]}.XXXX")
|
||||
trap 'rm -rf "$TMP_INSPECT_CMD" > /dev/null' RETURN INT TERM EXIT
|
||||
cat > "$TMP_INSPECT_CMD" <<EOF
|
||||
cat >"$TMP_INSPECT_CMD" <<EOF
|
||||
import json
|
||||
import sys
|
||||
|
||||
@@ -45,7 +46,7 @@ EOF
|
||||
local CONTAINER_FILES="$(find "$DOKKU_ROOT/$APP" -maxdepth 1 -name "CONTAINER.*" -printf "%f\n" 2>/dev/null | sort -t . -k 2 -n | xargs)"
|
||||
local CIDS=()
|
||||
for CONTAINER_FILE in $CONTAINER_FILES; do
|
||||
CIDS+="$(< "$DOKKU_ROOT/$APP/$CONTAINER_FILE")"
|
||||
CIDS+="$(<"$DOKKU_ROOT/$APP/$CONTAINER_FILE")"
|
||||
done
|
||||
docker inspect "${CIDS[@]}" | python2.7 "$TMP_INSPECT_CMD"
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
set -eo pipefail
|
||||
[[ $DOKKU_TRACE ]] && set -x
|
||||
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
||||
|
||||
scheduler-docker-local-scheduler-logs-failed() {
|
||||
@@ -23,12 +24,12 @@ scheduler-docker-local-scheduler-logs-failed() {
|
||||
while read -r LINE || [[ -n "$LINE" ]]; do
|
||||
CID="$(echo "$LINE" | cut -d ' ' -f1)"
|
||||
PREFIX="$(echo "$LINE" | cut -d ' ' -f2)"
|
||||
if docker inspect "${CID}" > /dev/null 2>&1; then
|
||||
if docker inspect "${CID}" >/dev/null 2>&1; then
|
||||
RUNNING_CONTAINERS+=("$CID")
|
||||
else
|
||||
DEAD_CONTAINERS+=("$CID")
|
||||
fi
|
||||
done < "$FAILED_CONTAINERS_FILE"
|
||||
done <"$FAILED_CONTAINERS_FILE"
|
||||
|
||||
for CID in "${DEAD_CONTAINERS[@]}"; do
|
||||
dokku_log_warn "App container $CID no longer running"
|
||||
@@ -40,7 +41,7 @@ scheduler-docker-local-scheduler-logs-failed() {
|
||||
return
|
||||
fi
|
||||
|
||||
((MAX_INDEX=${#RUNNING_CONTAINERS[*]} - 1)) || true
|
||||
((MAX_INDEX = ${#RUNNING_CONTAINERS[*]} - 1)) || true
|
||||
for i in ${!RUNNING_CONTAINERS[*]}; do
|
||||
local CID="${RUNNING_CONTAINERS[i]}"
|
||||
DOKKU_LOGS_CMD+="(docker logs $DOKKU_LOGS_ARGS $CID 2>&1)"
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
set -eo pipefail
|
||||
[[ $DOKKU_TRACE ]] && set -x
|
||||
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
||||
source "$PLUGIN_AVAILABLE_PATH/scheduler-docker-local/internal-functions"
|
||||
|
||||
@@ -26,19 +27,19 @@ scheduler-docker-local-scheduler-retire() {
|
||||
fi
|
||||
|
||||
fn-scheduler-docker-local-retire-container "$APP" "$CID" "$DEAD_TIME"
|
||||
if docker ps -aq -f "id=${CID}" -f "status=running" > /dev/null 2>&1; then
|
||||
if docker ps -aq -f "id=${CID}" -f "status=running" >/dev/null 2>&1; then
|
||||
dokku_log_warn "Container ${CID} still running"
|
||||
continue
|
||||
fi
|
||||
|
||||
docker rm -f "$CID" > /dev/null 2>&1 || true
|
||||
if docker inspect "${CID}" > /dev/null 2>&1; then
|
||||
docker rm -f "$CID" >/dev/null 2>&1 || true
|
||||
if docker inspect "${CID}" >/dev/null 2>&1; then
|
||||
dokku_log_warn "Container ${CID} still running"
|
||||
continue
|
||||
fi
|
||||
|
||||
DEAD_CONTAINERS+=("$CID")
|
||||
done < "$DEAD_CONTAINER_FILE"
|
||||
done <"$DEAD_CONTAINER_FILE"
|
||||
|
||||
for CID in "${DEAD_CONTAINERS[@]}"; do
|
||||
sed -i "/${CID}/d" "$DEAD_CONTAINER_FILE"
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
set -eo pipefail
|
||||
[[ $DOKKU_TRACE ]] && set -x
|
||||
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
||||
source "$PLUGIN_AVAILABLE_PATH/config/functions"
|
||||
source "$PLUGIN_AVAILABLE_PATH/ps/functions"
|
||||
@@ -7,7 +8,7 @@ source "$PLUGIN_AVAILABLE_PATH/ps/functions"
|
||||
scheduler-docker-local-scheduler-run() {
|
||||
declare desc="runs command in container based on app image"
|
||||
declare trigger="scheduler-docker-local scheduler-run"
|
||||
declare DOKKU_SCHEDULER="$1" APP="$2"
|
||||
declare DOKKU_SCHEDULER="$1" APP="$2"
|
||||
shift 2
|
||||
|
||||
if [[ "$DOKKU_SCHEDULER" != "docker-local" ]]; then
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
set -eo pipefail
|
||||
[[ $DOKKU_TRACE ]] && set -x
|
||||
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
||||
source "$PLUGIN_AVAILABLE_PATH/config/functions"
|
||||
|
||||
@@ -19,7 +20,7 @@ scheduler-docker-local-scheduler-stop() {
|
||||
|
||||
if [[ -n "$DOKKU_APP_RUNNING_CONTAINER_IDS" ]]; then
|
||||
# shellcheck disable=SC2086
|
||||
docker stop $DOCKER_STOP_TIME_ARG $DOKKU_APP_RUNNING_CONTAINER_IDS > /dev/null || true
|
||||
docker stop $DOCKER_STOP_TIME_ARG $DOKKU_APP_RUNNING_CONTAINER_IDS >/dev/null || true
|
||||
fi
|
||||
|
||||
if [[ "$REMOVE_CONTAINERS" == "true" ]]; then
|
||||
@@ -27,10 +28,9 @@ scheduler-docker-local-scheduler-stop() {
|
||||
|
||||
if [[ -n "$DOKKU_APP_CIDS" ]]; then
|
||||
# shellcheck disable=SC2086
|
||||
docker rm -f $DOKKU_APP_CIDS > /dev/null 2>&1 || true
|
||||
docker rm -f $DOKKU_APP_CIDS >/dev/null 2>&1 || true
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
scheduler-docker-local-scheduler-stop "$@"
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
set -eo pipefail
|
||||
[[ $DOKKU_TRACE ]] && set -x
|
||||
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
||||
|
||||
scheduler-docker-local-scheduler-tags-create() {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
set -eo pipefail
|
||||
[[ $DOKKU_TRACE ]] && set -x
|
||||
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
||||
|
||||
scheduler-docker-local-scheduler-tags-destroy() {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
set -eo pipefail
|
||||
[[ $DOKKU_TRACE ]] && set -x
|
||||
source "$PLUGIN_AVAILABLE_PATH/scheduler-docker-local/internal-functions"
|
||||
|
||||
cmd-scheduler-docker-local-help "scheduler-docker-local:help"
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
source "$PLUGIN_AVAILABLE_PATH/scheduler-docker-local/internal-functions"
|
||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
set -eo pipefail
|
||||
[[ $DOKKU_TRACE ]] && set -x
|
||||
|
||||
cmd-scheduler-docker-local-report "$@"
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
||||
source "$PLUGIN_CORE_AVAILABLE_PATH/common/property-functions"
|
||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
set -eo pipefail
|
||||
[[ $DOKKU_TRACE ]] && set -x
|
||||
|
||||
fn-in-array() {
|
||||
declare desc="return true if value ($1) is in list (all other arguments)"
|
||||
@@ -15,7 +16,8 @@ fn-in-array() {
|
||||
|
||||
scheduler-docker-local-set-cmd() {
|
||||
declare desc="set or clear a scheduler-docker-local property for an app"
|
||||
local cmd="scheduler-docker-local:set" argv=("$@"); [[ ${argv[0]} == "$cmd" ]] && shift 1
|
||||
local cmd="scheduler-docker-local:set" argv=("$@")
|
||||
[[ ${argv[0]} == "$cmd" ]] && shift 1
|
||||
declare APP="$1" KEY="$2" VALUE="$3"
|
||||
local VALID_KEYS=("disable-chown")
|
||||
[[ -z "$APP" ]] && dokku_log_fail "Please specify an app to run the command on"
|
||||
|
||||
Reference in New Issue
Block a user