gitea/recuperation_config.sh

88 lines
3.0 KiB
Bash
Raw Normal View History

2024-09-05 12:35:55 +00:00
#!/bin/bash
# Configuration des variables
ORG="CONFIGS"
2024-11-28 11:24:41 +00:00
CLIENT="SFR" # Le dépôt principal (SFR)
BASE_URL="https://repolake.alc-crm.com"
2024-09-05 12:35:55 +00:00
API_URL="$BASE_URL/api/v1"
2024-11-28 11:24:41 +00:00
REPO_NAME="$CLIENT" # Utilisation de SFR comme dépôt principal
REPO_PATH="/etc/gitea/$ORG/$CLIENT" # Chemin local pour le dépôt principal
BRANCH=$(hostname) # Une branche ou un sous-dossier par machine
2024-11-26 16:35:39 +00:00
TOKEN="434ac97ae9def5ac02024971582e82dd35f89ee0"
2024-11-28 10:58:31 +00:00
REPO_URL_TOKEN="https://$TOKEN@repolake.alc-crm.com/$ORG/$REPO_NAME.git"
2024-11-26 16:55:57 +00:00
HOSTNAME=$(hostname)
2024-09-05 12:35:55 +00:00
2024-11-28 11:24:41 +00:00
echo "Début du script pour $HOSTNAME dans le dépôt principal $CLIENT"
2024-09-05 12:35:55 +00:00
2024-11-28 11:24:41 +00:00
# Vérifie si le dépôt principal (SFR) existe
response_repo=$(curl -s -o /dev/null -w "%{http_code}" -H "Authorization: token $TOKEN" "$API_URL/repos/$ORG/$REPO_NAME")
2024-09-05 12:35:55 +00:00
2024-11-28 11:24:41 +00:00
if [ "$response_repo" -ne 200 ]; then
echo "Le dépôt principal $CLIENT n'existe pas. Création du dépôt..."
2024-09-05 12:35:55 +00:00
curl -s -X POST -H "Authorization: token $TOKEN" \
-H "Content-Type: application/json" \
-d "{\"name\": \"$REPO_NAME\", \"private\": false}" \
"$API_URL/orgs/$ORG/repos"
2024-11-28 11:24:41 +00:00
echo "Dépôt principal $CLIENT créé."
2024-09-05 12:35:55 +00:00
else
2024-11-28 11:24:41 +00:00
echo "Le dépôt principal $CLIENT existe déjà."
2024-09-05 12:35:55 +00:00
fi
2024-11-28 11:24:41 +00:00
# Vérifie si le dépôt principal est cloné localement
2024-09-05 12:35:55 +00:00
if [ ! -d "$REPO_PATH/.git" ]; then
2024-11-28 11:24:41 +00:00
echo "Clonage du dépôt principal dans $REPO_PATH..."
2024-09-05 12:35:55 +00:00
git clone "$REPO_URL_TOKEN" "$REPO_PATH"
2024-11-28 11:24:41 +00:00
if [ $? -ne 0 ]; then
echo "Erreur : Échec du clonage. Vérifiez l'URL ou les permissions."
exit 1
fi
fi
cd "$REPO_PATH"
# Crée une branche pour la machine si elle n'existe pas
if git branch --list | grep -q "$BRANCH"; then
echo "La branche $BRANCH existe déjà."
git checkout "$BRANCH"
2024-09-05 12:35:55 +00:00
else
2024-11-28 11:24:41 +00:00
echo "Création de la branche $BRANCH pour la machine $HOSTNAME..."
git checkout -b "$BRANCH"
git push --set-upstream origin "$BRANCH"
2024-09-05 12:35:55 +00:00
fi
2024-11-26 16:55:57 +00:00
# Configurer les informations utilisateur Git
if ! git config user.name &>/dev/null; then
git config user.name "admin-linexos"
git config user.email "technique@linexos.fr"
fi
# Lecture des chemins depuis le fichier de configuration
CONFIG_FILE="/etc/gitea/path_config"
2024-09-05 12:35:55 +00:00
if [ ! -f "$CONFIG_FILE" ]; then
2024-11-26 16:55:57 +00:00
echo "Le fichier $CONFIG_FILE n'existe pas."
2024-09-05 12:35:55 +00:00
exit 1
fi
2024-11-28 11:24:41 +00:00
echo "Copie des fichiers de configuration en maintenant l'arborescence dans la branche $BRANCH..."
2024-09-05 12:35:55 +00:00
while IFS= read -r file; do
if [ -f "$file" ]; then
2024-11-28 11:24:41 +00:00
DEST_DIR="$REPO_PATH/$HOSTNAME/$(dirname "$file")"
2024-09-05 12:35:55 +00:00
mkdir -p "$DEST_DIR"
cp "$file" "$DEST_DIR"
2024-11-26 16:55:57 +00:00
echo "Copié $file vers $DEST_DIR"
2024-09-05 12:35:55 +00:00
else
echo "Le fichier $file n'existe pas: $file"
fi
done < "$CONFIG_FILE"
2024-11-26 16:55:57 +00:00
# Ajout et push des modifications
2024-09-05 12:35:55 +00:00
git add -A
git commit -m "Mise à jour des fichiers de configuration pour $HOSTNAME"
2024-11-28 11:24:41 +00:00
git push origin "$BRANCH" || echo "Erreur lors du push. Vérifiez les permissions ou la connectivité réseau."
echo "Modifications poussées vers le dépôt principal $CLIENT dans la branche $BRANCH."
2024-09-05 12:35:55 +00:00
2024-11-28 11:24:41 +00:00
echo "Fin du script pour $HOSTNAME dans le dépôt principal $CLIENT."