From 8e8a159e884cf03474d541e572b00236c40595b5 Mon Sep 17 00:00:00 2001 From: william Date: Sun, 30 Aug 2026 16:04:10 +0200 Subject: [PATCH] =?UTF-8?q?Corrige=20la=20CI=20:=20les=20jobs=20de=20test?= =?UTF-8?q?=20tournent=20dans=20"container"=20au=20lieu=20d'un=20docker=20?= =?UTF-8?q?run=20imbriqu=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Le job "test" échouait ("Could not open requirements file: requirements-dev.txt") : docker run -v "$PWD":/app lancé DEPUIS un runner qui exécute déjà le job dans son propre conteneur (Docker- outside-of-Docker) ne peut pas monter "$PWD" — ce chemin vit dans le conteneur du job, pas sur l'hôte où tourne le vrai démon Docker sollicité par ce docker run imbriqué ; /app se retrouvait donc vide dans le conteneur imbriqué. Corrigé en utilisant la clé "container" (standard Gitea/GitHub Actions) : le job tourne DIRECTEMENT dans l'image voulue, le checkout dépose les fichiers dans son propre système de fichiers, aucun montage de volume à faire. Un seul job "test" ne peut avoir qu'UNE image : scindé en test-python (python:3.13-slim) et test-js (node:20-slim, pour les tests node:test de static/js/play/__tests__/), build-and-push dépend des deux. Co-Authored-By: Claude Sonnet 5 --- .gitea/workflows/deploy.yml | 40 +++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 8eeb6b7b..07e848c1 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -26,31 +26,37 @@ on: # github.com / du miroir gitea.com depuis le runner self-hosted. jobs: - test: + # Le job tourne DIRECTEMENT dans le conteneur (clé "container", standard + # Gitea/GitHub Actions) plutôt que de lancer un `docker run` imbriqué + # depuis le runner — un essai précédent (docker run -v "$PWD":/app ...) + # échouait avec "Could not open requirements file" : sur un runner qui + # exécute déjà le job dans un conteneur (Docker-outside-of-Docker), "$PWD" + # ne correspond à aucun chemin que le démon Docker de l'HÔTE peut monter, + # /app se retrouvait donc vide dans le conteneur imbriqué. Avec "container", + # le checkout dépose directement les fichiers dans le système de fichiers + # du conteneur du job, aucun montage de volume à faire soi-même. + test-python: runs-on: ubuntu-latest + container: + image: python:3.13-slim steps: - uses: actions/checkout@v4 - - # Conteneurs officiels plutôt que actions/setup-python|setup-node du - # marketplace — même logique que le reste de ce fichier (éviter une - # dépendance à la disponibilité de github.com/du miroir gitea.com - # depuis le runner self-hosted), et le runner n'a pas besoin - # d'installer quoi que ce soit d'autre que Docker, déjà requis pour - # build-and-push. + - name: Installer les dépendances Python (dev) + run: pip install --quiet -r requirements-dev.txt - name: Tests Python (pytest) - run: | - docker run --rm -v "$PWD":/app -w /app python:3.13-slim sh -c " - pip install --quiet -r requirements-dev.txt && - python -m pytest tests/ -q - " + run: python -m pytest tests/ -q + test-js: + runs-on: ubuntu-latest + container: + image: node:20-slim + steps: + - uses: actions/checkout@v4 - name: Tests JS (node:test — logique pure de static/js/play/, voir le plan de modularisation) - run: | - docker run --rm -v "$PWD":/app -w /app node:20-slim \ - node --test static/js/play/__tests__/*.test.js + run: node --test static/js/play/__tests__/*.test.js build-and-push: - needs: test + needs: [test-python, test-js] if: gitea.ref == 'refs/heads/main' runs-on: ubuntu-latest steps: