Script
LabelSync Pro
LabelSync Pro est un outil d'automatisation qui synchronise un jeu standardisé de labels GitHub sur l'ensemble de mes dépôts, à partir d'une source de vérité unique en JSON. La synchronisation est stricte : chaque label voulu est créé ou mis à jour (upsert), et tout label non listé dans la configuration est supprimé du dépôt cible. Le projet repose entièrement sur un workflow GitHub Actions planifié, ce qui évite toute exécution manuelle pour maintenir la cohérence de mes projets.
- stack
- Bash
- Git
- Automation
- CLI
- API
- DevOps

Choix techniques
Pourquoi chaque brique, et ce qu'elle apporte au projet.
GitHub Actions (workflow YAML)
Toute la logique vit dans `.github/workflows/manage-labels.yml` (le `script.sh` à la racine est vide). Pipeline déclenché par cron, dispatch manuel ou appel depuis un autre repo : ordonnancement, parallélisme et authentification natifs sans infra à héberger.
GitHub CLI (`gh`) en steps Bash
Manipulation via `gh label create --force` (upsert), `gh label list --json`, `gh label delete --yes` plutôt que des appels REST bruts (concision + auth gérée par le token).
Décisions d'architecture
Les arbitrages structurants, avec leur justification.
- Trois jobs séparés (list-repos → sync → summary)
- Un job collecte/valide les cibles, un job matrice synchronise, un job récapitule (`if: always()`). Chaque dépôt indépendant, vue claire de l'échec partiel.
- Matrice parallèle (`fail-fast: false`, `max-parallel: 5`)
- Dépôts traités en parallèle, l'échec d'un seul n'interrompt pas les autres : compromis vitesse / limites d'API GitHub.
- Synchronisation stricte plutôt qu'additive
- Suppression assumée des labels hors liste pour une vraie standardisation (le dépôt converge exactement vers `labels.json`), risque couvert par le mode `dry_run` et le topic d'opt-out `no-labelsync`.