52 lines
1.8 KiB
Bash
Executable File
52 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# Script pour lancer les agents de 4NK_template sur un projet externe
|
|
# Usage: ./run_agents_for_project.sh [project_path] [output_dir]
|
|
|
|
PROJECT_PATH="${1:-.}"
|
|
OUTPUT_DIR="${2:-tests/reports/agents}"
|
|
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
|
|
echo "Erreur: Le projet '$PROJECT_PATH' n'existe pas" >&2
|
|
exit 1
|
|
fi
|
|
|
|
mkdir -p "$PROJECT_PATH/$OUTPUT_DIR"
|
|
|
|
echo "=== Lancement des agents 4NK_template sur: $PROJECT_PATH ==="
|
|
|
|
if ! command -v docker >/dev/null 2>&1; then
|
|
echo "Docker requis pour exécuter les agents via conteneur." >&2
|
|
exit 2
|
|
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 utilisant l'ENTRYPOINT qui configure safe.directory
|
|
docker run --rm \
|
|
-e RUNNER_MODE=agents \
|
|
-e TARGET_DIR=/work \
|
|
-e OUTPUT_DIR=/work/$OUTPUT_DIR \
|
|
-v "$(realpath "$PROJECT_PATH"):/work" \
|
|
$ENV_MOUNT \
|
|
"$IMAGE_NAME" || 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 ==="
|