name: "Configuration validation" on: push: paths: - 'docker-compose.yml' - 'PopuraDNS/**' - '.github/workflows/**' pull_request: paths: - 'docker-compose.yml' - 'PopuraDNS/**' jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - name: Run full validation script run: | chmod +x scripts/validate-config.sh scripts/validate-config.sh smoke: needs: lint runs-on: ubuntu-latest services: docker: image: docker:24-dind privileged: true options: >- --cpus=2 --memory=4g steps: - uses: actions/checkout@v4 - name: Start stack and wait for health run: | docker compose up -d --build # wait up to 120 seconds for each container's healthcheck to pass for svc in darkdns darkpihole darkunbound darkalfis darkemer dark3proxy darktor darkproxy; do echo "waiting for $svc" for i in {1..24}; do status=$(docker inspect -f '{{.State.Health.Status}}' $svc 2>/dev/null || echo none) if [ "$status" = "healthy" ]; then echo "$svc healthy" && break fi sleep 5 done done docker compose ps # quick DNS smoke tests via CoreDNS container echo "testing onion resolution" docker exec darkdns dig +short @127.0.0.1 -p 53 facebookcorewwwi.onion echo "testing i2p resolution" docker exec darkdns dig +short @127.0.0.1 -p 53 stats.i2p docker compose down