feat: Ajoute la gestion des subtrees et des runners interactifs
Le script peut maintenant être lancé sur un sous-dossier qui n'est pas un dépôt Git.
S'il détecte que le dossier parent est un dépôt Git et que le sous-dossier est géré via 'git subtree', il demande interactivement à l'utilisateur de fournir le chemin du projet GitLab correspondant.
Cela permet de configurer la synchronisation pour des projets publiés via subtree sans avoir à cloner le dépôt publié séparément.
feat(subtree): Add automatic detection of subtree projects
The script can now be run on a subdirectory that is not a Git repository.
If it detects that the parent directory is a Git repository and the subdirectory is managed via 'git subtree', it interactively prompts the user to provide the corresponding GitLab project path.
This allows configuring synchronization for projects published via subtree without having to clone the published repository separately.
Cette requête de fusion introduit deux fonctionnalités majeures ainsi que plusieurs améliorations significatives pour rendre GitLab-Sync plus robuste, intelligent et convivial.
Elle consolide le travail des branches feature/subtree-detection et feature/runner-management.
Résumé des changements :
-
✨ Fonctionnalité : Détection automatique des projetssubtree
- Le script peut maintenant être exécuté directement sur un sous-répertoire géré par git subtree.
- Il détecte automatiquement le dépôt Git parent et demande de manière interactive à l'utilisateur le chemin du projet GitLab correspondant, simplifiant ainsi le processus pour les projets publiés via subtree.
-
🚀 Fonctionnalité : Gestion interactive et robuste des runners- Le script effectue désormais une vérification complète des runners CI/CD disponibles ET utilisables (spécifiques, de groupe et d'instance) en vérifiant les permissions du projet (group_runners_enabled, shared_runners_enabled).
- Si aucune configuration de runner fonctionnelle n'est trouvée, il propose interactivement à l'utilisateur d'activer les permissions nécessaires.
- Après s'être assuré que des runners sont disponibles, il liste tous les tags uniques de ces runners et demande à l'utilisateur de sélectionner ceux à appliquer au job de synchronisation dans le .gitlab-ci.yml.
- Cela garantit la mise en place d'un pipeline fonctionnel et correctement ciblé.
-
🐛 Correctif : Synchronisation de l'avatar- Correction d'un bug critique où la synchronisation de l'avatar échouait à cause de problèmes avec les URLs relatives et un manque d'authentification lors de la requête de téléchargement.
-
📈 Amélioration : Affichage de l'URL cible- Le script affiche désormais l'URL du projet cible à la fin d'une exécution réussie, fournissant une confirmation immédiate et un lien direct.
-
📚 Documentation- Le CHANGELog.md, le README.md, la ROADMAP.md et les Guides du Développeur ont été entièrement mis à jour pour refléter toutes les nouvelles fonctionnalités et logiques.
Tests :
Cette fonctionnalité a été testée de manière itérative et approfondie avec le projet Invoke-InteractiveShutdown, couvrant tous les nouveaux chemins logiques, y compris la détection de subtree, la correction des permissions de runner, la sélection de tags et la synchronisation de l'avatar.
Cette branche est maintenant complète, testée et prête à être fusionnée dans main.