feat(local): run_agents_for_project + ajustements pour image module

This commit is contained in:
Debian 2025-08-28 11:36:04 +00:00
parent 21e4f76445
commit 25453b045e

View File

@ -7,29 +7,44 @@ set -euo pipefail
PROJECT_PATH="${1:-.}" PROJECT_PATH="${1:-.}"
OUTPUT_DIR="${2:-tests/reports/agents}" OUTPUT_DIR="${2:-tests/reports/agents}"
TEMPLATE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" TEMPLATE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
MODULE_LAST_IMAGE_FILE="$(cd "$TEMPLATE_DIR/.." && pwd)/modules/4NK_template/.last_image"
if [[ ! -d "$PROJECT_PATH" ]]; then if [[ ! -d "$PROJECT_PATH" ]]; then
echo "Erreur: Le projet '$PROJECT_PATH' n'existe pas" >&2 echo "Erreur: Le projet '$PROJECT_PATH' n'existe pas" >&2
exit 1 exit 1
fi fi
mkdir -p "$PROJECT_PATH/$OUTPUT_DIR"
echo "=== Lancement des agents 4NK_template sur: $PROJECT_PATH ===" echo "=== Lancement des agents 4NK_template sur: $PROJECT_PATH ==="
# Exécuter les agents via le conteneur CI de 4NK_template if ! command -v docker >/dev/null 2>&1; then
cd "$TEMPLATE_DIR"
if command -v docker >/dev/null 2>&1; then
# Construire l'image si nécessaire
docker compose -f docker-compose.ci.yml build --no-cache
# Lancer les agents sur le projet externe
docker compose -f docker-compose.ci.yml run --rm \
-v "$(realpath "$PROJECT_PATH"):/work" \
-v "$(realpath "$PROJECT_PATH/$OUTPUT_DIR"):/work/$OUTPUT_DIR" \
project-ci bash -c "cd /work && scripts/agents/run.sh /work /work/$OUTPUT_DIR all"
else
echo "Docker requis pour exécuter les agents via conteneur." >&2 echo "Docker requis pour exécuter les agents via conteneur." >&2
exit 2 exit 2
fi fi
# Si une image du module existe, l'utiliser en priorité
if [[ -f "$MODULE_LAST_IMAGE_FILE" ]]; then
IMAGE_NAME="$(cat "$MODULE_LAST_IMAGE_FILE" | tr -d '\r\n')"
echo "Utilisation de l'image du module: $IMAGE_NAME"
# Préparer montage du fichier d'env si présent
ENV_MOUNT=""
if [[ -f "$HOME/.4nk_template/.env" ]]; then
ENV_MOUNT="-v $HOME/.4nk_template/.env:/root/.4nk_template/.env:ro"
fi
# Lancer le conteneur en forçant l'entrypoint bash pour appeler run.sh
docker run --rm \
-v "$(realpath "$PROJECT_PATH"):/work" \
$ENV_MOUNT \
--entrypoint bash \
"$IMAGE_NAME" -lc "cd /work && scripts/agents/run.sh /work /work/$OUTPUT_DIR all" \
|| true
else
echo "Aucune image de module détectée, fallback docker compose dans 4NK_template"
cd "$TEMPLATE_DIR"
docker compose -f docker-compose.ci.yml build
RUNNER_MODE="agents" TARGET_DIR="/work" OUTPUT_DIR="/work/$OUTPUT_DIR" \
docker compose -f docker-compose.ci.yml run --rm project-ci || true
fi
echo "=== Agents terminés → $PROJECT_PATH/$OUTPUT_DIR ===" echo "=== Agents terminés → $PROJECT_PATH/$OUTPUT_DIR ==="