Support removing a stack before deploying
This commit is contained in:
parent
563356b8b8
commit
3fb617a797
|
@ -20,6 +20,7 @@ This is meant to be used as a [Drone plugin](http://plugins.drone.io/).
|
||||||
- **port** (default: `222`): SSH port to connect to
|
- **port** (default: `222`): SSH port to connect to
|
||||||
- **user** (default: `drone`): System user to connect via SSH with
|
- **user** (default: `drone`): System user to connect via SSH with
|
||||||
- **networks** (default:): Try and auto-create these networks first
|
- **networks** (default:): Try and auto-create these networks first
|
||||||
|
- **rm**: (default: `false`): Remove the stack before deploying it
|
||||||
|
|
||||||
### Dangerous options, unwise outside CI
|
### Dangerous options, unwise outside CI
|
||||||
|
|
||||||
|
|
18
plugin.sh
18
plugin.sh
|
@ -7,6 +7,7 @@ PLUGIN_HOST=${PLUGIN_HOST:-swarm.autonomic.zone}
|
||||||
PLUGIN_PORT=${PLUGIN_PORT:-222}
|
PLUGIN_PORT=${PLUGIN_PORT:-222}
|
||||||
PLUGIN_PURGE=${PLUGIN_PURGE:-"false"}
|
PLUGIN_PURGE=${PLUGIN_PURGE:-"false"}
|
||||||
PLUGIN_USER=${PLUGIN_USER:-drone}
|
PLUGIN_USER=${PLUGIN_USER:-drone}
|
||||||
|
PLUGIN_RM=${PLUGIN_RM:-"false"}
|
||||||
|
|
||||||
REMOTE_DOCKER_HOST="ssh://$PLUGIN_USER@$PLUGIN_HOST:$PLUGIN_PORT"
|
REMOTE_DOCKER_HOST="ssh://$PLUGIN_USER@$PLUGIN_HOST:$PLUGIN_PORT"
|
||||||
|
|
||||||
|
@ -67,13 +68,23 @@ run_stack_deploy() {
|
||||||
}
|
}
|
||||||
|
|
||||||
run_stack_wait() {
|
run_stack_wait() {
|
||||||
export DOCKER_HOST="$REMOTE_DOCKER_HOST"
|
export DOCKER_HOST="$REMOTE_DOCKER_HOST"
|
||||||
docker run --rm vitalets/docker-stack-wait-deploy \
|
docker run --rm vitalets/docker-stack-wait-deploy \
|
||||||
| sed 's/True/true/' \
|
| sed 's/True/true/' \
|
||||||
| bash /dev/stdin "$PLUGIN_STACK"
|
| bash /dev/stdin "$PLUGIN_STACK"
|
||||||
unset DOCKER_HOST
|
unset DOCKER_HOST
|
||||||
}
|
}
|
||||||
|
|
||||||
|
run_stack_rm() {
|
||||||
|
echo "--- start stack rm ---"
|
||||||
|
docker -H "$REMOTE_DOCKER_HOST" stack rm "$PLUGIN_STACK"
|
||||||
|
|
||||||
|
# See https://github.com/moby/moby/issues/30942#issuecomment-540699206
|
||||||
|
until [ -z "$(docker -H "$REMOTE_DOCKER_HOST" stack ps "$PLUGIN_STACK" -q)" ]; do sleep 1; done
|
||||||
|
|
||||||
|
echo "--- end stack rm ---"
|
||||||
|
}
|
||||||
|
|
||||||
run_purge() {
|
run_purge() {
|
||||||
echo "--- start purge ---"
|
echo "--- start purge ---"
|
||||||
docker -H "$REMOTE_DOCKER_HOST" stack rm "$PLUGIN_STACK"
|
docker -H "$REMOTE_DOCKER_HOST" stack rm "$PLUGIN_STACK"
|
||||||
|
@ -100,7 +111,12 @@ run_plugin() {
|
||||||
generate_secrets
|
generate_secrets
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ "$PLUGIN_RM" == "true" ]; then
|
||||||
|
run_stack_rm
|
||||||
|
fi
|
||||||
|
|
||||||
run_stack_deploy
|
run_stack_deploy
|
||||||
|
|
||||||
run_stack_wait
|
run_stack_wait
|
||||||
|
|
||||||
if [ "$PLUGIN_PURGE" == "true" ]; then
|
if [ "$PLUGIN_PURGE" == "true" ]; then
|
||||||
|
|
Reference in New Issue