woodpecker/fix_from_macmini7.sh

82 lines
2.9 KiB
Bash
Executable File

#!/bin/bash
# Script to fix Woodpecker deployment from macmini7
echo "===== VERIFYING WE'RE ON MACMINI7 ====="
HOSTNAME=$(hostname)
if [[ "$HOSTNAME" != *"macmini7"* ]]; then
echo "ERROR: This script should be run on macmini7, current host is $HOSTNAME"
echo "Please run this script on macmini7"
exit 1
fi
echo "===== CHECKING SWARM ACCESS FROM MACMINI7 ====="
docker node ls || {
echo "ERROR: Cannot access Docker swarm from macmini7"
echo "Make sure macmini7 is a swarm manager"
exit 1
}
echo "===== CHECKING IF MACMINI1 IS IN SWARM ====="
docker node ls | grep macmini1 || {
echo "WARNING: macmini1 node not found in swarm!"
echo "The stack.yml has constraints requiring macmini1"
}
echo "===== REMOVING ANY EXISTING WOODPECKER STACK ====="
docker stack rm woodpecker
echo "Waiting for stack removal..."
sleep 20
echo "===== CHECKING FOR ORPHANED SERVICES ====="
docker service ls | grep woodpecker && echo "WARNING: Woodpecker services still exist after stack removal!"
echo "===== ENSURING DIRECTORIES EXIST ON MACMINI1 ====="
echo "Note: This requires SSH access to macmini1 or shared storage"
echo "Creating directories for Woodpecker..."
mkdir -p /mnt/data/nixc.us/woodpecker/production/db /mnt/data/nixc.us/woodpecker/production/data || {
echo "WARNING: Could not create directories locally"
echo "Attempting to create directories via SSH..."
ssh macmini1 "mkdir -p /mnt/data/nixc.us/woodpecker/production/db /mnt/data/nixc.us/woodpecker/production/data" || {
echo "ERROR: Could not create directories on macmini1 via SSH"
echo "You may need to manually create these directories on macmini1"
}
}
echo "===== ENSURING NETWORKS EXIST ====="
docker network create --driver=overlay --attachable traefik || echo "traefik network already exists"
echo "===== DEPLOYING WOODPECKER STACK FROM MACMINI7 ====="
cd /mnt/tank/persist/nixc.us/woodpecker/production
echo "Current directory: $(pwd)"
ls -la stack.yml || {
echo "ERROR: stack.yml not found in $(pwd)"
echo "Please make sure the stack.yml file exists in this directory"
exit 1
}
echo "Deploying from stack.yml..."
docker stack deploy -c stack.yml woodpecker
echo "===== WAITING FOR SERVICES TO START ====="
echo "Waiting 30 seconds for services to start..."
sleep 30
echo "===== SERVICE STATUS ====="
docker service ls | grep woodpecker
echo "===== CHECKING SERVICE PLACEMENT ====="
for service in $(docker service ls --format "{{.Name}}" | grep woodpecker); do
echo "Checking placement for $service..."
docker service ps $service --no-trunc --format "{{.Node}} {{.CurrentState}}"
done
echo "===== CHECKING LOGS ====="
echo "Database logs:"
docker service logs --tail 20 woodpecker_db || echo "Could not get database logs"
echo "Server logs:"
docker service logs --tail 20 woodpecker_server || echo "Could not get server logs"
echo "===== DONE ====="
echo "If services are not running, check the logs above for errors."