58 lines
1.4 KiB
Bash
Executable File
58 lines
1.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
PLUGIN_COMPOSE=${PLUGIN_COMPOSE:-compose.yml}
|
|
PLUGIN_HOST=${PLUGIN_HOST:-swarm.autonomic.zone}
|
|
PLUGIN_PORT=${PLUGIN_PORT:-222}
|
|
PLUGIN_USER=${PLUGIN_USER:-drone}
|
|
|
|
generate_secrets() {
|
|
echo "--- start secrets ---"
|
|
for SECRET in $(docker run --rm -v "${PWD}":/workdir mikefarah/yq yq r "$PLUGIN_COMPOSE" 'secrets.*.name'); do
|
|
eval "echo \"generating $SECRET\""
|
|
PW=$(</dev/urandom tr -dc 'A-Za-z0-9' | head -c 40; echo)
|
|
eval "echo \"$PW\" | docker secret create \"$SECRET\" -";
|
|
done
|
|
echo "--- end secrets ---"
|
|
}
|
|
|
|
load_deploy_key() {
|
|
mkdir -p "$HOME/.ssh/"
|
|
ssh-keyscan -p "$PLUGIN_PORT" "$PLUGIN_HOST" > "$HOME/.ssh/known_hosts"
|
|
|
|
# shellcheck disable=SC2046,SC2006
|
|
eval `ssh-agent`
|
|
echo "$PLUGIN_DEPLOY_KEY" | ssh-add -
|
|
}
|
|
|
|
run_stack_deploy() {
|
|
echo "--- start docker info ---"
|
|
docker version
|
|
echo "--- end docker info ---"
|
|
|
|
docker \
|
|
-H "ssh://$PLUGIN_USER@$PLUGIN_HOST:$PLUGIN_PORT" \
|
|
stack deploy -c "$PLUGIN_COMPOSE" "$PLUGIN_STACK"
|
|
}
|
|
|
|
run_stack_wait() {
|
|
export DOCKER_HOST="ssh://$PLUGIN_USER@$PLUGIN_HOST:$PLUGIN_PORT"
|
|
docker run --rm vitalets/docker-stack-wait-deploy | sed 's/True/true/' | bash /dev/stdin "$PLUGIN_STACK"
|
|
}
|
|
|
|
run_plugin() {
|
|
echo "--- start deployment ---"
|
|
load_deploy_key
|
|
|
|
if [ -n "$PLUGIN_GENERATE_SECRETS" ]; then
|
|
generate_secrets
|
|
fi
|
|
|
|
run_stack_deploy
|
|
run_stack_wait
|
|
echo "--- end deployment ---"
|
|
}
|
|
|
|
run_plugin
|