diff --git a/woodpecker.yaml b/woodpecker.yaml index 8e72b17..d6e453b 100644 --- a/woodpecker.yaml +++ b/woodpecker.yaml @@ -1,37 +1,22 @@ -version: '3.8' - services: - # Woodpecker Server - Central orchestration woodpecker-server: image: woodpeckerci/woodpecker-server:latest ports: - - "8000:8000" # HTTP - - "9000:9000" # gRPC (agents communicate here) + - "8000:8000" + - "9000:9000" environment: - # Server configuration WOODPECKER_HOST: https://${WOODPECKER_HOST} WOODPECKER_PROTO: https - WOODPECKER_OPEN: "false" # Private instance - - # Gitea integration + WOODPECKER_OPEN: "false" WOODPECKER_GITEA: "true" WOODPECKER_GITEA_URL: https://${GITEA_HOST} WOODPECKER_GITEA_CLIENT: ${WOODPECKER_GITEA_CLIENT} WOODPECKER_GITEA_SECRET: ${WOODPECKER_GITEA_SECRET} - - # Agent security WOODPECKER_AGENT_SECRET: ${WOODPECKER_AGENT_SECRET} - - # Allow organizations WOODPECKER_ORGS: homelab,admin - - # Logging WOODPECKER_LOG_LEVEL: info - - # Database (using existing PostgreSQL) WOODPECKER_DATABASE_DRIVER: postgres WOODPECKER_DATABASE_DATASOURCE: postgres://${DB_USER}:${DB_PASS}@${POSTGRES_HOST}:${POSTGRES_PORT}/woodpecker?sslmode=disable - volumes: - /var/run/docker.sock:/var/run/docker.sock - /etc/timezone:/etc/timezone:ro @@ -43,7 +28,7 @@ services: replicas: 1 placement: constraints: - - node.hostname == docker-2 # Run on manager node only + - node.hostname == docker-2 labels: - traefik.enable=true - traefik.http.routers.woodpecker.entrypoints=websecure @@ -52,23 +37,26 @@ services: - traefik.http.routers.woodpecker.tls.certresolver=letsencrypt - traefik.docker.network=traefik_backend - traefik.http.services.woodpecker.loadbalancer.server.port=8000 + update_config: + parallelism: 1 + delay: 15s + failure_action: rollback + monitor: 30s + order: start-first + rollback_config: + parallelism: 1 + failure_action: pause + order: start-first - # Woodpecker Agents - Pipeline execution woodpecker-agent: image: woodpeckerci/woodpecker-agent:latest command: agent environment: - # Server connection WOODPECKER_SERVER: woodpecker-server:9000 WOODPECKER_AGENT_SECRET: ${WOODPECKER_AGENT_SECRET} - - # Agent configuration - WOODPECKER_MAX_PROCS: 4 # Max parallel builds per agent + WOODPECKER_MAX_PROCS: 4 WOODPECKER_LOG_LEVEL: info - - # Labels for scheduling WOODPECKER_FILTER_LABELS: "true" - volumes: - /var/run/docker.sock:/var/run/docker.sock - /etc/timezone:/etc/timezone:ro @@ -76,9 +64,17 @@ services: networks: - traefik_backend deploy: - mode: global # One agent per node - depends_on: - - woodpecker-server + mode: global + update_config: + parallelism: 1 + delay: 30s + failure_action: rollback + monitor: 15s + order: start-first + rollback_config: + parallelism: 1 + failure_action: pause + order: start-first networks: traefik_backend: