# Woodpecker CI Configuration for Woodpecker Self-Deploy labels: location: manager clone: git: image: woodpeckerci/plugin-git settings: partial: false depth: 1 when: branch: [main] steps: deploy-woodpecker: name: deploy-woodpecker image: woodpeckerci/plugin-docker-buildx volumes: - /var/run/docker.sock:/var/run/docker.sock commands: - echo "nameserver 1.1.1.1" > /etc/resolv.conf - echo "nameserver 1.0.0.1" >> /etc/resolv.conf - HOSTNAME=$(docker info --format "{{.Name}}") - echo "Deploying on $HOSTNAME" - docker node ls || (echo "Runner must be on a Swarm manager" && exit 1) - echo "Checking for existing networks..." - docker network ls - echo "Checking if required directories exist..." - ls -la /mnt/data/nixc.us/woodpecker/production/ || echo "Directory doesn't exist" - 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 "Verifying directories..." - ls -la /mnt/data/nixc.us/woodpecker/production/ - 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]