66 lines
2.6 KiB
Bash
66 lines
2.6 KiB
Bash
#!/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://<username>:<token>@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."
|