This commit is contained in:
		
							
								
								
									
										37
									
								
								plugin.sh
									
									
									
									
									
								
							
							
						
						
									
										37
									
								
								plugin.sh
									
									
									
									
									
								
							| @ -8,7 +8,14 @@ PLUGIN_PORT=${PLUGIN_PORT:-222} | |||||||
| PLUGIN_PURGE=${PLUGIN_PURGE:-"false"} | PLUGIN_PURGE=${PLUGIN_PURGE:-"false"} | ||||||
| PLUGIN_USER=${PLUGIN_USER:-drone} | PLUGIN_USER=${PLUGIN_USER:-drone} | ||||||
|  |  | ||||||
| DOCKER_HOST="ssh://$PLUGIN_USER@$PLUGIN_HOST:$PLUGIN_PORT" | REMOTE_DOCKER_HOST="ssh://$PLUGIN_USER@$PLUGIN_HOST:$PLUGIN_PORT" | ||||||
|  |  | ||||||
|  | create_networks() { | ||||||
|  |   for NETWORK in $PLUGIN_NETWORKS; do | ||||||
|  |     docker -H "$REMOTE_DOCKER_HOST" \ | ||||||
|  |       network create --driver=overlay $NETWORK --scope swarm || true | ||||||
|  |   done | ||||||
|  | } | ||||||
|  |  | ||||||
| generate_secrets() { | generate_secrets() { | ||||||
|   echo "--- start secrets ---" |   echo "--- start secrets ---" | ||||||
| @ -18,16 +25,14 @@ generate_secrets() { | |||||||
|   wget https://github.com/mikefarah/yq/releases/download/${VERSION}/${BINARY} -O /usr/bin/yq &&\ |   wget https://github.com/mikefarah/yq/releases/download/${VERSION}/${BINARY} -O /usr/bin/yq &&\ | ||||||
|     chmod +x /usr/bin/yq |     chmod +x /usr/bin/yq | ||||||
|  |  | ||||||
|   export DOCKER_HOST="ssh://$PLUGIN_USER@$PLUGIN_HOST:$PLUGIN_PORT" |  | ||||||
|  |  | ||||||
|   for SECRET in $(yq r "$PLUGIN_COMPOSE" 'secrets.*.name'); do |   for SECRET in $(yq r "$PLUGIN_COMPOSE" 'secrets.*.name'); do | ||||||
|     SECRET=$(eval echo "$SECRET") |     SECRET=$(eval echo "$SECRET") | ||||||
|     if docker secret ls | grep -q "$SECRET"; then |     if docker -H "$REMOTE_DOCKER_HOST" secret ls | grep -q "$SECRET"; then | ||||||
|       echo "Skipping existing secret $SECRET" |       echo "Skipping existing secret $SECRET" | ||||||
|     else |     else | ||||||
|       eval "echo \"generating $SECRET\"" |       eval "echo \"generating $SECRET\"" | ||||||
|       PW=$(</dev/urandom tr -dc 'A-Za-z0-9' | head -c 40; echo) |       PW=$(</dev/urandom tr -dc 'A-Za-z0-9' | head -c 40; echo) | ||||||
|       eval "echo \"$PW\" | docker secret create \"$SECRET\" -"; |       eval "echo \"$PW\" | docker -H \"$REMOTE_DOCKER_HOST\" secret create \"$SECRET\" -"; | ||||||
|     fi |     fi | ||||||
|   done |   done | ||||||
|   echo "--- end secrets ---" |   echo "--- end secrets ---" | ||||||
| @ -52,28 +57,26 @@ output_versions(){ | |||||||
|  |  | ||||||
| run_stack_deploy() { | run_stack_deploy() { | ||||||
|   echo "--- start deploy ---" |   echo "--- start deploy ---" | ||||||
|   docker -H "$DOCKER_HOST" stack deploy -c "$PLUGIN_COMPOSE" "$PLUGIN_STACK" |   docker  stack deploy -c "$PLUGIN_COMPOSE" "$PLUGIN_STACK" | ||||||
|   echo "--- end deploy ---" |   echo "--- end deploy ---" | ||||||
| } | } | ||||||
|  |  | ||||||
| run_stack_wait() { | run_stack_wait() { | ||||||
|   export DOCKER_HOST="ssh://$PLUGIN_USER@$PLUGIN_HOST:$PLUGIN_PORT" |   docker -H "$REMOTE_DOCKER_HOST" run --rm vitalets/docker-stack-wait-deploy \ | ||||||
|  |     | sed 's/True/true/' \ | ||||||
|   docker run --rm vitalets/docker-stack-wait-deploy \ |     | bash /dev/stdin "$PLUGIN_STACK" | ||||||
|   | sed 's/True/true/' \ |  | ||||||
|   | bash /dev/stdin "$PLUGIN_STACK" |  | ||||||
| } | } | ||||||
|  |  | ||||||
| run_purge() { | run_purge() { | ||||||
|   echo "--- start purge ---" |   echo "--- start purge ---" | ||||||
|   docker -H "$DOCKER_HOST" stack rm "$PLUGIN_STACK" |   docker -H "$REMOTE_DOCKER_HOST" stack rm "$PLUGIN_STACK" | ||||||
|  |  | ||||||
|   # See https://github.com/moby/moby/issues/30942#issuecomment-540699206 |   # See https://github.com/moby/moby/issues/30942#issuecomment-540699206 | ||||||
|   until [ -z "$(docker stack ps "$PLUGIN_STACK" -q)" ]; do sleep 1; done |   until [ -z "$(docker -H "$REMOTE_DOCKER_HOST" stack ps "$PLUGIN_STACK" -q)" ]; do sleep 1; done | ||||||
|   docker -H "$DOCKER_HOST" system prune --all --volumes --force |   docker -H "$REMOTE_DOCKER_HOST" system prune --all --volumes --force | ||||||
|  |  | ||||||
|   # try and remove all secrets; Docker will leave ones which are in use |   # try and remove all secrets; Docker will leave ones which are in use | ||||||
|   docker -H "$DOCKER_HOST" secret ls --format '{{ .Name }}' | xargs -i sh -c "echo {}; docker -H \"$DOCKER_HOST\" secret rm {} || true" |   docker -H "$REMOTE_DOCKER_HOST" secret ls --format '{{ .Name }}' | xargs -i sh -c "echo {}; docker -H \"$REMOTE_DOCKER_HOST\" secret rm {} || true" | ||||||
|   echo "--- end purge ---" |   echo "--- end purge ---" | ||||||
| } | } | ||||||
|  |  | ||||||
| @ -82,6 +85,10 @@ run_plugin() { | |||||||
|   load_deploy_key |   load_deploy_key | ||||||
|   output_versions |   output_versions | ||||||
|  |  | ||||||
|  |   if [ -n "$PLUGIN_NETWORKS" ]; then | ||||||
|  |     create_networks | ||||||
|  |   fi | ||||||
|  |  | ||||||
|   if [ -n "$PLUGIN_GENERATE_SECRETS" ]; then |   if [ -n "$PLUGIN_GENERATE_SECRETS" ]; then | ||||||
|     generate_secrets |     generate_secrets | ||||||
|   fi |   fi | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user