docker-cp-deploy/plugin.sh

83 lines
2.2 KiB
Bash
Raw Normal View History

2020-11-14 21:27:16 +00:00
#!/bin/bash
set -e
2020-11-14 22:11:03 +00:00
set -o pipefail
2020-11-14 21:27:16 +00:00
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 ---"
2021-12-10 20:22:35 +00:00
CONTAINER=$(docker -H "$REMOTE_DOCKER_HOST" container ls -q -f "name=/$PLUGIN_SERVICE")
2020-11-14 22:52:31 +00:00
2020-11-14 21:39:12 +00:00
if [ -z "$CONTAINER" ]; then
2020-11-14 21:27:16 +00:00
echo "ERROR: can't find container for $PLUGIN_SERVICE"
return 1
fi
2020-11-14 22:52:31 +00:00
2022-03-07 12:46:56 +00:00
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
2020-11-14 22:52:31 +00:00
CD=""
if [ -n "$PLUGIN_CHDIR" ]; then
CD="-C $PLUGIN_CHDIR"
fi
2024-01-23 01:32:16 +00:00
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
2024-01-23 01:41:16 +00:00
echo "--- end exec_pre ---"
2024-01-23 01:32:16 +00:00
2020-11-14 22:13:55 +00:00
echo "Copying $PLUGIN_SOURCE"
2020-11-14 22:10:33 +00:00
# shellcheck disable=SC2086
2020-11-14 22:52:31 +00:00
tar cf - $CD $PLUGIN_SOURCE | docker -H "$REMOTE_DOCKER_HOST" cp - $CONTAINER:$PLUGIN_DEST
2022-03-07 12:46:56 +00:00
2021-12-16 16:18:30 +00:00
echo "--- start exec ---"
2021-12-10 20:22:35 +00:00
if [ -n "$PLUGIN_EXEC" ]; then
2022-08-09 15:30:46 +00:00
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"
2021-12-10 20:22:35 +00:00
fi
2021-12-16 16:18:30 +00:00
echo "--- end exec ---"
2021-12-10 20:22:35 +00:00
2020-11-14 21:27:16 +00:00
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