90 lines
1.7 KiB
Bash
Executable File
90 lines
1.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -e
|
|
#set -x
|
|
|
|
LOCAL_IMAGE=sslproxy
|
|
TAG=2.2.${BUILD_NUMBER:-dev}
|
|
REMOTE_IMAGE=dkregistry.xai-corp.net:5000/${LOCAL_IMAGE}:${TAG}
|
|
APP_NAME=sslproxy_app
|
|
|
|
LOG=$(mktemp)
|
|
|
|
#export LOCAL_IMAGE
|
|
export REMOTE_IMAGE
|
|
#export TAG
|
|
|
|
export DOCKER_HOST=${DOCKER_HOST:-'dkhost:2376'}
|
|
|
|
###
|
|
|
|
function rollback() {
|
|
# docker service inspect ${APP_NAME}
|
|
docker service update --rollback "${APP_NAME}"
|
|
|
|
wait_for_completed
|
|
# docker service scale "${APP_NAME}=2"
|
|
}
|
|
|
|
wait_for_completed() {
|
|
#states supported: "rollback_completed", "updating", "completed"
|
|
state=$(docker service inspect sslproxy_app | jq -r .[0].UpdateStatus.State)
|
|
while [ "rollback_completed" != "$state" ]; do
|
|
echo "$state"
|
|
sleep 3
|
|
state=$(docker service inspect sslproxy_app | jq -r .[0].UpdateStatus.State)
|
|
done
|
|
}
|
|
|
|
function rollback_test() {
|
|
docker service ps --filter "desired-state=Running" sslproxy_app
|
|
|
|
docker ps | grep "${APP_NAME}"
|
|
|
|
curl -If https://git.xai-corp.net/
|
|
}
|
|
|
|
function rollback_save() {
|
|
echo TODO
|
|
}
|
|
|
|
|
|
function trap_exit() {
|
|
code=$?
|
|
docker service ls | grep ${APP_NAME}
|
|
if [ $code -gt 0 ]; then
|
|
echo
|
|
rm "$LOG"
|
|
echo -e "\033[31mFailed rolling back ${APP_NAME} \033[39m"
|
|
exit $code
|
|
fi
|
|
|
|
rm "$LOG"
|
|
echo -e "\033[32mSuccess:\033[39m ${APP_NAME} successfully rolled back"
|
|
}
|
|
trap trap_exit EXIT
|
|
|
|
print_usage() {
|
|
printf "Usage: %s: [-b] [-t] [-s] \n" "$0"
|
|
echo -r rollback
|
|
echo -t smoke tests
|
|
echo -s tag as latest
|
|
echo -h help
|
|
exit 0
|
|
}
|
|
|
|
######
|
|
if [ -z "$1" ]; then
|
|
rollback && rollback_test && rollback_save
|
|
exit
|
|
fi
|
|
|
|
while getopts tdhs name
|
|
do
|
|
case $name in
|
|
d) rollback;;
|
|
t) rollback_test;;
|
|
s) rollback_save;;
|
|
*) print_usage;;
|
|
esac
|
|
done
|