|
|
|
|
@ -36,16 +36,60 @@ start_ssh_agent() {
|
|
|
|
|
ssh-add <(echo "$SSH_PRIVATE_KEY")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
compose_run() {
|
|
|
|
|
local remote_command="set -e ; log() { echo '>> [remote]' \$@ ; } ; cleanup() { log 'Removing workspace...'; rm -rf \"\$HOME/workspace\" ; } ; log 'Creating workspace directory...' ; mkdir -p \"\$HOME/workspace\" ; trap cleanup EXIT ; log 'Unpacking workspace...' ; tar -C \"\$HOME/workspace\" -xjv ; log 'Launching docker compose...' ; cd \"\$HOME/workspace\" ; docker compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PROJECT\" pull ; docker compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" up -d --remove-orphans --build"
|
|
|
|
|
compose_up() {
|
|
|
|
|
echo "set -e ; log() { echo '>> [remote]' \$@ ; } ; cleanup() { log 'Removing workspace...'; rm -rf \"\$HOME/workspace\" ; } ; log 'Creating workspace directory...' ; mkdir -p \"\$HOME/workspace\" ; trap cleanup EXIT ; log 'Unpacking workspace...' ; tar -C \"\$HOME/workspace\" -xjv ; log 'Launching docker compose...' ; cd \"\$HOME/workspace\" ; docker compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PROJECT\" pull ; docker compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PROJECT\" up -d --remove-orphans --build"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if "$DOCKER_COMPOSE_DOWN"; then
|
|
|
|
|
remote_command="set -e ; log() { echo '>> [remote]' \$@ ; } ; cleanup() { log 'Removing workspace...'; rm -rf \"\$HOME/workspace\" ; } ; log 'Creating workspace directory...' ; mkdir -p \"\$HOME/workspace\" ; trap cleanup EXIT ; log 'Unpacking workspace...' ; tar -C \"\$HOME/workspace\" -xjv ; log 'Launching docker compose...' ; cd \"\$HOME/workspace\" ; docker compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PROJECT\" down"
|
|
|
|
|
compose_down() {
|
|
|
|
|
echo "set -e ; log() { echo '>> [remote]' \$@ ; } ; cleanup() { log 'Removing workspace...'; rm -rf \"\$HOME/workspace\" ; } ; log 'Creating workspace directory...' ; mkdir -p \"\$HOME/workspace\" ; trap cleanup EXIT ; log 'Unpacking workspace...' ; tar -C \"\$HOME/workspace\" -xjv ; log 'Launching docker compose...' ; cd \"\$HOME/workspace\" ; docker compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PROJECT\" down"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
stack_up() {
|
|
|
|
|
echo "set -e ; log() { echo '>> [remote]' \$@ ; } ; cleanup() { log 'Removing workspace...'; rm -rf \"\$HOME/workspace\" ; } ; log 'Creating workspace directory...' ; mkdir -p \"\$HOME/workspace/$DOCKER_COMPOSE_PROJECT\" ; trap cleanup EXIT ; log 'Unpacking workspace...' ; tar -C \"\$HOME/workspace/$DOCKER_COMPOSE_PROJECT\" -xjv ; log 'Launching docker stack deploy...' ; cd \"\$HOME/workspace/$DOCKER_COMPOSE_PROJECT\" ; docker stack deploy -c \"$DOCKER_COMPOSE_FILENAME\" --prune \"$DOCKER_COMPOSE_PROJECT\""
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
stack_down() {
|
|
|
|
|
# It is not at all necessary to transfer and unpack the workspace here, but I'll do it anyway for simplicity's sake.
|
|
|
|
|
echo "set -e ; log() { echo '>> [remote]' \$@ ; } ; cleanup() { log 'Removing workspace...'; rm -rf \"\$HOME/workspace\" ; } ; log 'Creating workspace directory...' ; mkdir -p \"\$HOME/workspace/$DOCKER_COMPOSE_PROJECT\" ; trap cleanup EXIT ; log 'Unpacking workspace...' ; tar -C \"\$HOME/workspace/$DOCKER_COMPOSE_PROJECT\" -xjv ; log 'Launching docker stack rm...' ; cd \"\$HOME/workspace/$DOCKER_COMPOSE_PROJECT\" ; docker stack rm \"$DOCKER_COMPOSE_PROJECT\""
|
|
|
|
|
}
|
|
|
|
|
custom_action() {
|
|
|
|
|
echo "set -e ; log() { echo '>> [remote]' \$@ ; } ; cleanup() { log 'Removing workspace...'; rm -rf \"\$HOME/workspace\" ; } ; log 'Creating workspace directory...' ; mkdir -p \"\$HOME/workspace\" ; trap cleanup EXIT ; log 'Unpacking workspace...' ; tar -C \"\$HOME/workspace\" -xjv ; log 'Launching docker compose...' ; cd \"\$HOME/workspace\" ; docker compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PROJECT\" run --rm $CUSTOM_ACTION_TARGET $CUSTOM_ACTION"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
deploy() {
|
|
|
|
|
local remote_command
|
|
|
|
|
if $SWARM_MODE; then
|
|
|
|
|
if [ "$DEPLOY_ACTION" == "up" ]; then
|
|
|
|
|
log "Deploying docker swarm stack ${DOCKER_COMPOSE_PROJECT}."
|
|
|
|
|
remote_command=$(stack_up)
|
|
|
|
|
else
|
|
|
|
|
log "Removing docker swarm stack ${DOCKER_COMPOSE_PROJECT}"
|
|
|
|
|
remote_command=$(stack_down)
|
|
|
|
|
fi
|
|
|
|
|
else
|
|
|
|
|
if [ "$DEPLOY_ACTION" == "up" ]; then
|
|
|
|
|
log "Deploying docker compose project ${DOCKER_COMPOSE_PROJECT}."
|
|
|
|
|
remote_command=$(compose_up)
|
|
|
|
|
elif [ "$DEPLOY_ACTION" == "down" ]; then
|
|
|
|
|
log "Removing docker compose project ${DOCKER_COMPOSE_PROJECT}."
|
|
|
|
|
remote_command=$(compose_down)
|
|
|
|
|
elif [ "$DEPLOY_ACTION" == "custom" ]; then
|
|
|
|
|
if [ -z "$CUSTOM_ACTION" ] || [ -z "$CUSTOM_ACTION_TARGET" ]; then
|
|
|
|
|
echo "ERROR: You must set custom_container_action and custom_container_action_target"
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
log "Running custom action on project ${DOCKER_COMPOSE_PROJECT}:"
|
|
|
|
|
log "Action: ${CUSTOM_ACTION}"
|
|
|
|
|
log "Target: ${CUSTOM_ACTION_TARGET}"
|
|
|
|
|
remote_command=$(custom_action)
|
|
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
fi
|
|
|
|
|
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \
|
|
|
|
|
"$SSH_USER@$SSH_HOST" -p "$SSH_PORT" \
|
|
|
|
|
"$remote_command" \
|
|
|
|
|
< /tmp/workspace.tar.bz2
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if [ -n "${RUN_DIR:-}" ]; then
|
|
|
|
|
@ -57,4 +101,4 @@ log "Starting deployment main function."
|
|
|
|
|
unlock
|
|
|
|
|
compress_workdir
|
|
|
|
|
start_ssh_agent
|
|
|
|
|
compose_run
|
|
|
|
|
deploy
|
|
|
|
|
|