dkregistry xai cli, and UI

This commit is contained in:
2021-09-01 08:16:12 -04:00
parent 8be0dbff49
commit e156b183ed
10 changed files with 268 additions and 26 deletions

View File

@@ -0,0 +1,101 @@
#!/usr/bin/env bash
set -e
set -x
STACK_NAME=dkregistry
SERVICE_NAME=registry
APP_NAME=${STACK_NAME}_${SERVICE_NAME}
LOG=$(mktemp)
export DOCKER_HOST=${DOCKER_HOST:-'dkhost:2376'}
###
function deploy() {
docker stack deploy \
--with-registry-auth \
-c docker-compose.yml \
${STACK_NAME}
sleep 2
docker stack ps ${STACK_NAME}
# wait_for_completed
}
wait_for_completed() {
#states supported: "rollback_completed", "updating", "completed"
state=$(docker service inspect ${APP_NAME} | jq -r .[0].UpdateStatus.State)
while [ "completed" != "$state" ]; do
echo "$state"
sleep 3
state=$(docker service inspect ${APP_NAME} | jq -r .[0].UpdateStatus.State)
done
sleep 5
}
function deploy_test() {
docker ps | grep ${APP_NAME}
assertOK https dkregistry.xai-corp.net
}
function deploy_save() {
echo "No image to save"
}
dc() {
# shellcheck disable=SC2068
docker-compose \
-f docker-compose.yml \
$@
}
function assertOK() {
proto=$1
domain=$2
set -e
echo -e "\033[94m${proto}://${domain}\033[39m"
curl -IskH "Host: ${domain}" "${proto}://dkhost.xai-corp.net:5000" |
tee "$LOG" | grep -P "HTTP\/2 200|200 OK|302 Found|403 Forbidden"
}
function trap_exit() {
code=$?
docker service ls | grep "${APP_NAME}" || echo "service not found"
if [ $code -gt 0 ]; then
echo
cat "$LOG"
rm "$LOG"
echo -e "\033[31mFailed to deploy ${REMOTE_IMAGE} \033[39m"
exit $code
fi
rm "$LOG"
echo -e "\033[32mSuccess:\033[39m ${REMOTE_IMAGE} successfully deployed"
}
trap trap_exit EXIT
print_usage() {
printf "Usage: %s: [-b] [-t] [-s] \n" "$0"
echo -d deploy
echo -t smoke tests
echo -s tag as latest
echo -h help
exit 0
}
######
if [ -z "$1" ]; then
deploy && deploy_test && deploy_save
exit
fi
while getopts tdhs name; do
case $name in
d) deploy ;;
t) deploy_test ;;
s) deploy_save ;;
*) print_usage ;;
esac
done

View File

@@ -0,0 +1,4 @@
xai deploy [-dt]
-d deploy
-t test deployment

View File

@@ -0,0 +1 @@
xai deploy [-dt]

View File

@@ -0,0 +1,15 @@
#!/usr/bin/env bash
set -e
set -x
dc() {
# shellcheck disable=SC2068
docker-compose \
-f docker-compose.yml \
$@
}
export DOCKER_HOST=${DOCKER_HOST:-'dkhost:2376'}
dc exec dkregistry_registry.1 /bin/bash

View File

@@ -0,0 +1,90 @@
#!/usr/bin/env bash
set -e
#set -x
NC_VERSION=${NC_VERSION:-18}
LOCAL_IMAGE=xaicorp/nextcloud
TAG=${NC_VERSION}.0-${BUILD_NUMBER:-dev}
REMOTE_IMAGE=dkregistry.xai-corp.net:5000/${LOCAL_IMAGE}:${TAG}
STACK_NAME=xaibox
SERVICE_NAME=app
APP_NAME=${STACK_NAME}_${SERVICE_NAME}
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 ${APP_NAME} | jq -r .[0].UpdateStatus.State)
while [ "rollback_completed" != "$state" ]; do
echo "$state"
sleep 3
state=$(docker service inspect ${APP_NAME} | jq -r .[0].UpdateStatus.State)
done
}
function rollback_test() {
docker service ps --filter "desired-state=Healthy" ${APP_NAME}
docker ps | grep "${APP_NAME}"
}
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

View File

@@ -0,0 +1,3 @@
ARGS - The arguments you wish to provide to this command
TODO: Fill out the help information for this command.

View File

@@ -0,0 +1 @@
ARGS...