
Andrew Hanna

Andrew Hanna

En bref : choisissez votre modèle de branches à partir de deux entrées, la taille de l'équipe et la topologie des sandboxes, et rien d'autre. En dessous d'environ quatre contributeurs avec seulement des sandboxes développeur, une branche main et des branches de fonctionnalité de courte durée. Entre quatre et dix avec une Partial Copy pour l'UAT, ajoutez une branche de release par livraison et arrêtez-vous là. Au-delà, ou avec une Full sandbox et une fenêtre de changement fixe, GitFlow mérite sa cérémonie. La branche par environnement est un choix de conformité, pas d'ingénierie.
Trois choses, et seulement trois : où vit le travail en cours, comment un changement est promu vers l'environnement suivant, et ce qui doit être vrai avant qu'il atteigne la production. Le reste relève de la décoration de schéma.
Les équipes Salesforce se trompent parce que les conseils d'ingénierie généralistes supposent une chose fausse sur la plateforme : qu'une branche vous donne un endroit pour l'exécuter.
Une seule branche durable, main, qui reflète toujours ce que la
production devrait être. Les branches de fonctionnalité vivent des jours, pas des
semaines, et reviennent par pull request. Le moins de pièces mobiles, le moins de
conflits, la discipline la plus exigeante.
main pour le code livré, develop pour le travail intégré,
plus des branches de release et de hotfix. Conçu pour des livraisons planifiées et
pour maintenir une version en production pendant que la suivante se construit. Cela
coûte une branche permanente de plus et beaucoup de fusions.
Une branche par org : dev, UAT, préproduction, production. C'est souvent la première chose que les équipes construisent, parce que cela ressemble au paysage d'orgs qu'elles ont déjà. La promotion devient une fusion entre branches d'environnement, ce qui paraît propre et se transforme en fusions de fusions et en cherry-pick de routine.
C'est là que s'arrêtent la plupart des articles sur les branches, et c'est là que se joue la vraie décision.
develop permanent : votre parc de sandboxes ne le justifie pas.
Notez que la cadence de livraison apparaît à peine. La cadence est un résultat de votre topologie de sandboxes, pas une entrée indépendante, et les équipes qui choisissent selon la cadence souhaitée obtiennent un processus que leurs environnements ne peuvent pas soutenir.
main avec la production et traitez l'écart comme un vrai
backlog, pas une curiosité. C'est en général là que sont les surprises.
Le modèle qui survit au contact d'une vraie équipe est celui que le pipeline impose, pas celui du document d'accueil. Si un consultant doit se souvenir des règles de branches, elles sauteront dès la première semaine de livraison chargée. Serpent fonctionne par tickets avec Git en arrière-plan : la branche, la pull request et le chemin de promotion viennent du ticket, pas de la mémoire. D'autres guides de pipeline vivent dans notre bibliothèque SF Guides.
Le trunk-based est-il réaliste pour une équipe d'administrateurs ?
Oui, et c'est généralement plus simple que GitFlow, car il n'y a qu'une branche à comprendre. La discipline qui compte, ce sont les branches courtes, pas la maîtrise de Git.
Faut-il une branche Git par sandbox ?
Non. Une sandbox est une cible de déploiement. Associer une branche à chaque org est la cause principale des fusions de fusions et du cherry-pick permanent. Pour l'association bien faite, voir Comment associer les branches Git aux sandboxes Salesforce.
Combien de temps doit vivre une branche de fonctionnalité ?
Des jours. Un sprint est la limite haute. Au-delà, la dérive des métadonnées et les conflits de profils coûtent plus que la branche ne rapporte.
Comment gérer les hotfixes en trunk-based ?
Branchez depuis le dernier commit livré, corrigez, validez, déployez, puis refusionnez immédiatement dans main pour ne pas perdre le correctif à la livraison suivante.
Le modèle change-t-il pour les équipes 2GP ?
Oui. Branchez par version de package et testez en scratch orgs. Les branches d'environnement modélisent un paysage d'orgs vers lequel une équipe package ne livre pas.
Sans engagement.