diff --git a/.ci/deploy.sh b/.ci/deploy.sh new file mode 100755 index 0000000..382e262 --- /dev/null +++ b/.ci/deploy.sh @@ -0,0 +1,62 @@ +#!/usr/bin/env bash + +# Automatic deployer script +# This script is meant to be run on solar.coala.io! + +WORKDIR=/opt/solar + +log() { + echo "$(date -u "+%b %Y %T") $USER: $*" +} + +fail() { + log "FAIL: $*" + exit 1 +} + +update_service() { + directory=$1 + name=$(basename $directory) + + pushd $directory + + log "Updating $name ..." + + docker-compose up --force-recreate --build -d + + if [ $? -ne 0 ]; then + log "An error has occured while updating $name!" + fi + + popd +} + +update_services() { + for service in "$@"; do + update_service $service + done +} + +log "Starting Automated Deployment ..." + +cd $WORKDIR || fail "Working directory doesn't exist" + +log "Pulling changes ..." +git pull || fail "An error has occured while pulling updates" + +log "Retrieving services ..." + +services=$(find $WORK_DIR -maxdepth 2 -name "docker-compose.yml" -printf "%h\n") +services_len=$(echo "$services" | wc -l) + +log "Found $services_len services, here's a list of them: " + +for service in $services; do + log " * $(basename $service)" +done + +log "Updating services ..." + +update_services $services + +log "Deployment finished! Have a nice day!" diff --git a/.ci/magic_key.asc b/.ci/magic_key.asc new file mode 100644 index 0000000..a87f126 --- /dev/null +++ b/.ci/magic_key.asc @@ -0,0 +1,68 @@ +-----BEGIN PGP MESSAGE----- + +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 +=uiUy +-----END PGP MESSAGE----- diff --git a/.rultor.yml b/.rultor.yml index 2159954..e58f887 100644 --- a/.rultor.yml +++ b/.rultor.yml @@ -1,3 +1,11 @@ +decrypt: + magic_key: "repo/.ci/magic_key.asc" merge: fast-forward: only script: echo "Nothing to do." +deploy: + script: + - eval "$(ssh-agent -s)" + - chmod 600 ../magic_key + - ssh-add ../magic_key + - ssh rultor@solar.coala.io "bash -s" < ./repo/.ci/deploy.sh