64 lines
1.7 KiB
YAML
64 lines
1.7 KiB
YAML
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
|