Improve deployment script with better diagnostics and more resilient node constraints

This commit is contained in:
Colin 2025-10-12 22:26:35 -04:00
parent 7605702fc1
commit 3fcf235f36
Signed by: colin
SSH Key Fingerprint: SHA256:nRPCQTeMFLdGytxRQmPVK9VXY3/ePKQ5lGRyJhT5DY8
2 changed files with 25 additions and 9 deletions

View File

@ -23,13 +23,29 @@ steps:
- echo "nameserver 1.0.0.1" >> /etc/resolv.conf
- HOSTNAME=$(docker info --format "{{.Name}}")
- echo "Deploying on $HOSTNAME"
- docker node ls >/dev/null 2>&1 || (echo "Runner must be on a Swarm manager" && exit 1)
- mkdir -p /mnt/data/nixc.us/woodpecker/production/db /mnt/data/nixc.us/woodpecker/production/data
- chmod -R 777 /mnt/data/nixc.us/woodpecker/production
- echo "Starting deployment in background - CI job will complete while services update"
- (sleep 5 && docker stack deploy --with-registry-auth -c stack.yml woodpecker) &
- sleep 3
- echo "Deployment initiated successfully - CI job completing"
- docker node ls || (echo "Runner must be on a Swarm manager" && exit 1)
- echo "Checking for existing networks..."
- docker network ls
- echo "Creating required directories..."
- mkdir -p /mnt/data/nixc.us/woodpecker/production/db /mnt/data/nixc.us/woodpecker/production/data || true
- chmod -R 777 /mnt/data/nixc.us/woodpecker/production || true
- echo "Ensuring traefik network exists..."
- docker network create --driver=overlay --attachable traefik || true
- echo "Removing any existing stack..."
- docker stack rm woodpecker || true
- echo "Waiting for cleanup..."
- sleep 10
- echo "Deploying stack..."
- docker stack deploy --with-registry-auth -c stack.yml woodpecker
- echo "Waiting for services to start..."
- sleep 15
- echo "Service status:"
- docker service ls | grep woodpecker
- echo "Checking logs for server:"
- docker service logs --tail 10 woodpecker_server || true
- echo "Checking logs for database:"
- docker service logs --tail 10 woodpecker_db || true
- echo "Deployment completed"
when:
branch: main
event: [push]

View File

@ -20,7 +20,7 @@ services:
replicas: 1
placement:
constraints:
- node.hostname == macmini1
- node.role == manager
labels:
- "traefik.enable=false"
update_config:
@ -63,7 +63,7 @@ services:
replicas: 1
placement:
constraints:
- node.hostname == macmini1
- node.role == manager
labels:
# Web UI Configuration
traefik.enable: "true"