#!/bin/bash # Configuration des variables ORG="SysConf" BASE_URL="https://sysconfgit.linexos.eu" API_URL="$BASE_URL/api/v1" REPO_NAME=$(hostname) REPO_URL="$BASE_URL/$ORG/$REPO_NAME.git" REPO_PATH="/etc/gitea/ConfigSysRepo" # Chemin local générique pour cloner les dépôts BRANCH="main" TOKEN="c4be311f3abf82ee98e3a0412fac4c9c7d233eb2" REPO_URL_TOKEN="https://$TOKEN@sysconfgit.linexos.eu/$ORG/$REPO_NAME.git" HOSTNAME=$(hostname) # Nom de la machine echo "Début du script pour $HOSTNAME" # Vérifie si le dépôt existe déjà en utilisant l'API de Gitea response=$(curl -s -o /dev/null -w "%{http_code}" -H "Authorization: token $TOKEN" "$API_URL/repos/$ORG/$REPO_NAME") if [ "$response" -ne 200 ]; then echo "Le dépôt $REPO_NAME n'existe pas. Création du dépôt..." curl -s -X POST -H "Authorization: token $TOKEN" \ -H "Content-Type: application/json" \ -d "{\"name\": \"$REPO_NAME\", \"private\": false}" \ "$API_URL/orgs/$ORG/repos" echo "Dépôt $REPO_NAME créé." else echo "Le dépôt $REPO_NAME existe déjà." fi # Vérifie si le répertoire du dépôt existe localement et le clone si nécessaire if [ ! -d "$REPO_PATH/.git" ]; then echo "Le dépôt n'existe pas localement. Clonage du dépôt..." git clone "$REPO_URL_TOKEN" "$REPO_PATH" cd "$REPO_PATH" # Initialisation du dépôt local et création de la branche main echo "Initialisation du dépôt local..." git checkout -b $BRANCH touch .gitkeep # Ajoute un fichier pour initialiser le dépôt git add .gitkeep git commit -m "Initial commit" git push --set-upstream origin $BRANCH else echo "Le dépôt existe déjà localement." cd "$REPO_PATH" git checkout $BRANCH || git checkout -b $BRANCH fi # Configurer les informations utilisateur Git pour le dépôt local si elles ne sont pas déjà configurées if ! git config user.name &>/dev/null; then git config user.name "admin-linexos" git config user.email "technique@linexos.fr" fi # Tente de mettre à jour le dépôt local en cas de modifications distantes git pull --rebase origin $BRANCH # Lecture des chemins des fichiers depuis le fichier de configuration CONFIG_FILE="/etc/gitea/path_config" # Chemin du fichier de configuration if [ ! -f "$CONFIG_FILE" ]; then echo "Le fichier de configuration $CONFIG_FILE n'existe pas." exit 1 fi echo "Copie des fichiers de configuration en maintenant l'arborescence..." while IFS= read -r file; do if [ -f "$file" ]; then DEST_DIR="$REPO_PATH/$(dirname "$file")" mkdir -p "$DEST_DIR" echo "Copie de $file vers $DEST_DIR" cp "$file" "$DEST_DIR" else echo "Le fichier $file n'existe pas: $file" fi done < "$CONFIG_FILE" # Ajout de toutes les modifications git add -A # Git operations git commit -m "Mise à jour des fichiers de configuration pour $HOSTNAME" git push origin $BRANCH echo "Modifications poussées vers le dépôt." echo "Fin du script."