#!/bin/bash set -e set -o pipefail # set -x # vars via Semaphore UI / Variable Group MAIN_BR="${MAIN_BR:-main}" ENV="${ENV:-staging}" ENV_BR="${ENV_BR:-test_feature}" PLAYBOOK_FILE="${PLAYBOOK_FILE:-base.yaml}" # --- VALIDATION DES IDENTIFIANTS GIT --- if [ -z "$GIT_USERNAME" ] || [ -z "$GIT_TOKEN" ]; then echo "[ERROR] Les variables d'environnement GIT_USERNAME et/ou GIT_TOKEN ne sont pas définies ou sont vides !" echo "[ERROR] Veuillez vous assurer qu'elles sont fournies via l'interface utilisateur de Semaphore / Variable Group." exit 1 fi echo "[INFO] Utilisation de GIT_USERNAME: $GIT_USERNAME pour le clonage HTTPS." # Ne pas afficher le GIT_TOKEN dans les logs pour des raisons de sécurité. # --- UTILISER LES URLS HTTPS AVEC AUTHENTIFICATION INTÉGRÉE --- # Le format est : https://:@domain.com/path/to/repo.git REPO_CORE_URL_RAW="git.felcloud.io/felcloud/ansible_core_init_ansible.git" REPO_ENV_URL_RAW="git.felcloud.io/felcloud/ansible_env_staging.git" REPO_CORE="https://"$GIT_USERNAME":"$GIT_TOKEN"@${REPO_CORE_URL_RAW}" REPO_ENV="https://"$GIT_USERNAME":"$GIT_TOKEN"@${REPO_ENV_URL_RAW}" echo "[INFO] Clonage des dépôts en utilisant HTTPS..." # Pour l'affichage dans les logs, on utilise une version "propre" de l'URL sans le token echo "[INFO] Clonage de https://${REPO_CORE_URL_RAW} sur la branche $ENV_BR..." git clone --branch "$ENV_BR" "$REPO_CORE" ansible_core_init_ansible || { echo "[FATAL] Échec du clonage de ${REPO_CORE_URL_RAW}. Vérifiez les identifiants, l'URL et les permissions du jeton."; exit 1; } echo "[INFO] Clonage réussi de ${REPO_CORE_URL_RAW}." echo "[INFO] Clonage de https://${REPO_ENV_URL_RAW}..." git clone "$REPO_ENV" ansible_env_staging || { echo "[FATAL] Échec du clonage de ${REPO_ENV_URL_RAW}. Vérifiez les identifiants, l'URL et les permissions du jeton."; exit 1; } echo "[INFO] Clonage réussi de ${REPO_ENV_URL_RAW}." cd ansible_core_init_ansible echo "[INFO] Construction de l'image Docker localement..." docker build --no-cache --build-arg branch=fix_packages_dependencies -t ansible-pulumi:local . cd .. echo "[INFO] Exécution du conteneur admin avec le playbook : $PLAYBOOK_FILE" docker run --rm -it \ -v "$(pwd)/ansible_env_staging:/home/cloud/ansible_env_staging" \ -e MAIN_BR="$MAIN_BR" \ -e ENV="$ENV" \ -e ENV_BR="$ENV_BR" \ ansible-pulumi:local bash -c " set -e; \ echo '[CONTAINER] Répertoire courant : \$(pwd)'; \ cd /home/cloud/ansible-pulumi && \ source /home/cloud/venv/bin/activate && \ ansible-playbook playbooks/${PLAYBOOK_FILE} -i /home/cloud/ansible_env_staging/hosts" echo "[INFO] Tâche terminée."