#!/bin/bash set -e set -o pipefail PLUGIN_SOURCE=${PLUGIN_SOURCE:-.} PLUGIN_HOST=${PLUGIN_HOST:-swarm.autonomic.zone} PLUGIN_PORT=${PLUGIN_PORT:-222} PLUGIN_USER=${PLUGIN_USER:-drone} PLUGIN_DEST=${PLUGIN_DEST:?dest is not set} REMOTE_DOCKER_HOST="ssh://$PLUGIN_USER@$PLUGIN_HOST:$PLUGIN_PORT" load_deploy_key() { echo "--- start ssh key load ---" 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 - echo "--- end ssh key load ---" } output_versions(){ echo "--- start versions" docker version echo "--- end versions" } run_docker_cp() { echo "--- start deploy ---" CONTAINER=$(docker -H "$REMOTE_DOCKER_HOST" container ls -q -f "name=/$PLUGIN_SERVICE") if [ -z "$CONTAINER" ]; then echo "ERROR: can't find container for $PLUGIN_SERVICE" return 1 fi NEWL=$(echo "$CONTAINER" | grep -c '$') if [[ $NEWL != 1 ]]; then echo "There are $NEWL containers running with the name $PLUGIN_SERVICE. I don't know which one should i copy your files to. Check your containers and stop the unnecessary ones, then restart this script." echo -e "Containers digests: \n$CONTAINER" return 1 fi CD="" if [ -n "$PLUGIN_CHDIR" ]; then CD="-C $PLUGIN_CHDIR" fi echo "--- start exec_pre ---" if [ -n "$PLUGIN_EXEC_PRE" ]; then docker -H "$REMOTE_DOCKER_HOST" exec "$CONTAINER" sh -c "mkdir -p /root/.ssh && echo \"$PLUGIN_DEPLOY_KEY\" > /root/.ssh/id_rsa && chmod -R 600 /root/.ssh && $PLUGIN_EXEC_PRE" fi echo "--- end exec_pre ---" echo "Copying $PLUGIN_SOURCE" # shellcheck disable=SC2086 tar cf - $CD $PLUGIN_SOURCE | docker -H "$REMOTE_DOCKER_HOST" cp - $CONTAINER:$PLUGIN_DEST echo "--- start exec ---" if [ -n "$PLUGIN_EXEC" ]; then docker -H "$REMOTE_DOCKER_HOST" exec "$CONTAINER" sh -c "mkdir -p /root/.ssh && echo \"$PLUGIN_DEPLOY_KEY\" > /root/.ssh/id_rsa && chmod -R 600 /root/.ssh && $PLUGIN_EXEC" fi echo "--- end exec ---" echo "--- end deploy ---" } run_plugin() { echo "--- start docker-cp-deploy ---" load_deploy_key output_versions run_docker_cp echo "--- end docker-cp-deploy ---" } run_plugin