Dev #7
+33
-18
@@ -26,34 +26,49 @@ on:
|
||||
# github.com / du miroir gitea.com depuis le runner self-hosted.
|
||||
|
||||
jobs:
|
||||
# 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.
|
||||
# Deux essais précédents ont échoué :
|
||||
# 1. docker run -v "$PWD":/app ... imbriqué depuis le runner — sur un
|
||||
# runner qui exécute déjà le job dans son propre conteneur (Docker-
|
||||
# outside-of-Docker), "$PWD" ne correspond à aucun chemin que le démon
|
||||
# Docker de l'HÔTE peut monter : /app se retrouvait vide.
|
||||
# 2. jobs.test.container: image: python:3.13-slim — actions/checkout@v4
|
||||
# (une action Node.js) a alors besoin de Node dans CE conteneur pour
|
||||
# s'exécuter, qui ne l'a pas ("command not found", voir
|
||||
# nektos/act#107) : `container:` remplace tout l'environnement des
|
||||
# steps, pas seulement celui des commandes qu'on y lance soi-même.
|
||||
# Solution : le job tourne sur le runner PAR DÉFAUT (checkout fonctionne,
|
||||
# Node y est déjà disponible), et les tests s'exécutent PENDANT un
|
||||
# `docker build` (Dockerfile passé par stdin, jamais commité) — le
|
||||
# transfert du contexte de build au démon Docker ne dépend JAMAIS d'un
|
||||
# chemin hôte/montage de volume (protocole API, un tar envoyé tel quel),
|
||||
# donc insensible au problème Docker-outside-of-Docker du point 1.
|
||||
test-python:
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: python:3.13-slim
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Installer les dépendances Python (dev)
|
||||
run: pip install --quiet -r requirements-dev.txt
|
||||
- name: Tests Python (pytest)
|
||||
run: python -m pytest tests/ -q
|
||||
- name: Tests Python (pytest, exécutés PENDANT le build d'une image jetable)
|
||||
run: |
|
||||
docker build -f - -t forge-test-python:${{ gitea.sha }} . <<'DOCKERFILE'
|
||||
FROM python:3.13-slim
|
||||
WORKDIR /app
|
||||
COPY requirements.txt requirements-dev.txt ./
|
||||
RUN pip install --no-cache-dir -r requirements-dev.txt
|
||||
COPY . .
|
||||
RUN python -m pytest tests/ -q
|
||||
DOCKERFILE
|
||||
|
||||
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: node --test static/js/play/__tests__/*.test.js
|
||||
run: |
|
||||
docker build -f - -t forge-test-js:${{ gitea.sha }} . <<'DOCKERFILE'
|
||||
FROM node:20-slim
|
||||
WORKDIR /app
|
||||
COPY static/js/play/ static/js/play/
|
||||
RUN node --test static/js/play/__tests__/*.test.js
|
||||
DOCKERFILE
|
||||
|
||||
build-and-push:
|
||||
needs: [test-python, test-js]
|
||||
|
||||
Reference in New Issue
Block a user