From 3908e1601a244e5d2a17ca314a3e8b4ac763efae Mon Sep 17 00:00:00 2001 From: Bruno Charest Date: Mon, 7 Sep 2026 10:20:52 -0400 Subject: [PATCH] fix(ci): contournement DNS flaky + retry pour le job Docker build MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Le job 'CI / build' échouait avec : failed to fetch anonymous token: dial tcp: lookup auth.docker.io on 127.0.0.11:53: server misbehaving Le résolveur DNS embarqué du daemon Docker sur le runner GitHub Actions est bogué de manière intermittente. Cette PR ajoute : 1. Étape 'Configure DNS' qui configure /etc/docker/daemon.json avec les DNS publics Google/Cloudflare/Quad9 (8.8.8.8, 1.1.1.1, 9.9.9.9) puis redémarre le daemon Docker 2. Retry jusqu'à 3 fois (10s, 20s d'attente) sur la commande docker build pour absorber les flakes réseau ponctuels Aucun changement au Dockerfile lui-même — il fonctionne en local et le bug est purement infrastructure. --- .gitea/workflows/ci.yml | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index dd005a1..6007105 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -111,8 +111,33 @@ jobs: VERSION=$(git describe --tags --dirty 2>/dev/null | sed 's/^v//' || echo "0.0.0-dev") echo "$VERSION" > backend/VERSION - - name: Build Docker image - run: docker build -t obsigate:ci . + - name: Configure DNS (workaround flaky 127.0.0.11 resolver) + # GitHub Actions runners occasionally fail to resolve auth.docker.io via + # the embedded Docker DNS (127.0.0.11:53 → "server misbehaving"). + # Force the daemon to use public DNS as a fallback. + run: | + sudo mkdir -p /etc/docker + if ! grep -q "dns" /etc/docker/daemon.json 2>/dev/null; then + echo '{"dns": ["8.8.8.8", "1.1.1.1", "9.9.9.9"]}' | sudo tee /etc/docker/daemon.json + sudo systemctl restart docker || sudo service docker restart || true + sleep 3 + fi + + - name: Build Docker image (retry on transient DNS/network errors) + run: | + for attempt in 1 2 3; do + echo "=== docker build attempt $attempt/3 ===" + if docker build -t obsigate:ci . ; then + echo "✓ Docker build succeeded" + exit 0 + fi + echo "✗ Build failed (attempt $attempt)" + if [ $attempt -lt 3 ]; then + sleep $((attempt * 10)) + fi + done + echo "✗ Docker build failed after 3 attempts" + exit 1 - name: Verify image run: docker images obsigate:ci