Tous les projets

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
Aperçu du projet LabelSync Pro

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`.