Skip to main content
Le ruleset production-grade est la barrière de conformité qui protège les branches production et staging sur tous les dépôts applicatifs de l’organisation kaeyros-analytics-org. Cette page décrit ce que le ruleset impose, à qui il s’applique et comment le lire.

Ce que le ruleset impose

Cible

Branches refs/heads/production et refs/heads/staging

Portée

Dépôt kaeyros-analytics-org/sema (à généraliser au reste)

Application

enforcement: active, s’applique à tous les collaborateurs

Contournement

OrganizationAdmin et un rôle de dépôt (id 5), mode always

Les cinq règles

Aucun utilisateur ne peut supprimer les branches production ou staging, même avec les droits d’écriture. Une suppression accidentelle depuis l’interface GitHub ou en ligne de commande est refusée.
Toute mise à jour qui n’est pas un fast-forward est refusée. Autrement dit, aucun git push --force ni aucune réécriture d’historique n’est possible sur ces deux branches. L’historique est immuable.
Toute modification passe par une PR avec les paramètres suivants:
Le fichier CODEOWNERS du dépôt détermine qui doit approuver quelles zones. Sans CODEOWNER pour un chemin modifié, la PR ne peut pas être mergée.
La règle update verrouille la mise à jour de la référence: seule la voie de la Pull Request permet de faire avancer la branche. Un git push direct sur production ou staging est refusé.
Toute PR vers production ou staging doit d’abord avoir déclenché un déploiement sur l’environnement develop. Concrètement, la CI doit avoir publié une image et validé le déploiement dev avant qu’un merge soit possible.
Une PR qui n’a pas de déploiement develop réussi restera bloquée à l’étape de merge, quelles que soient les approbations obtenues.

Le flux complet, protégé par le ruleset

Qui peut contourner

Deux acteurs sont autorisés à contourner le ruleset en mode always:

OrganizationAdmin

Les administrateurs de l’organisation kaeyros-analytics-org.

Rôle de dépôt id 5

Un rôle de dépôt custom défini par l’équipe. À documenter précisément.
Le contournement en mode always doit rester exceptionnel. Chaque contournement laisse une trace auditable dans les logs d’organisation. Documentez le motif dans le message de commit ou dans le ticket associé.

Les erreurs les plus fréquentes

Vérifiez dans l’ordre:
  • Avez-vous 2 approbations distinctes?
  • Un CODEOWNER a-t-il approuvé les chemins modifiés?
  • Le dernier commit est-il approuvé après avoir été poussé (require_last_push_approval)?
  • Toutes les conversations sont-elles résolues?
  • Y a-t-il un déploiement réussi sur develop pour cette référence?
C’est le comportement de dismiss_stale_reviews_on_push. Chaque nouveau push invalide les revues. Vos relecteurs doivent réapprouver après votre dernier commit.
La PR exige un déploiement réussi sur l’environnement develop. Vérifiez que le pipeline CI a bien publié l’image, que argocd-image-updater l’a détectée, et que ArgoCD a marqué le déploiement comme réussi.
Le paramètre require_extra_approval_for_unattributed_changes exige une approbation supplémentaire pour tout commit dont l’auteur ne peut pas être rattaché à un membre de l’organisation (typiquement, un commit fait par un compte non lié à GitHub). Faites approuver une fois de plus, ou réécrivez le commit avec l’auteur correct avant la protection.

Manifeste GitHub complet

Le ruleset est versionné et applicable par API. Voici le manifeste tel qu’il existe aujourd’hui sur le dépôt sema:
production-grade.json

Généraliser le ruleset

Ce ruleset est aujourd’hui déclaré sur le dépôt sema. Pour le généraliser aux autres dépôts applicatifs, exportez-le puis appliquez-le via l’API GitHub sur chaque dépôt cible, ou déclarez-le au niveau de l’organisation pour couvrir plusieurs dépôts avec une seule règle.
Contact pour toute question sur la protection des branches ou la conformité: devops@kaeyros-analytics.com.