
Serpent Team

Andrew Hanna

En bref : choisissez votre modele de branches a partir de deux entrees, la taille de l'equipe et la topologie des sandboxes, et rien d'autre. En dessous d'environ quatre contributeurs avec seulement des sandboxes developpeur, une branche main et des branches de fonctionnalite de courte duree. Entre quatre et dix avec une Partial Copy pour l'UAT, ajoutez une branche de release par livraison et arretez-vous la. Au-dela, ou avec une Full sandbox et une fenetre de changement fixe, GitFlow merite sa ceremonie. La branche par environnement est un choix de conformite, pas d'ingenierie.
Trois choses, et seulement trois : ou vit le travail en cours, comment un changement est promu vers l'environnement suivant, et ce qui doit etre vrai avant qu'il atteigne la production. Le reste releve de la decoration de schema.
Les equipes Salesforce se trompent parce que les conseils d'ingenierie generalistes supposent une chose fausse sur la plateforme : qu'une branche vous donne un endroit pour l'executer.
Une seule branche durable, main, qui reflete toujours ce que la
production devrait etre. Les branches de fonctionnalite vivent des jours, pas des
semaines, et reviennent par pull request. Le moins de pieces mobiles, le moins de
conflits, la discipline la plus exigeante.
main pour le code livre, develop pour le travail integre,
plus des branches de release et de hotfix. Concu pour des livraisons planifiees et
pour maintenir une version en production pendant que la suivante se construit. Cela
coute une branche permanente de plus et beaucoup de fusions.
Une branche par org : dev, UAT, preproduction, production. C'est souvent la premiere chose que les equipes construisent, parce que cela ressemble au paysage d'orgs qu'elles ont deja. La promotion devient une fusion entre branches d'environnement, ce qui parait propre et se transforme en fusions de fusions et en cherry-pick de routine.
C'est la que s'arretent la plupart des articles sur les branches, et c'est la que se joue la vraie decision.
develop permanent : votre parc de sandboxes ne le justifie pas.
Notez que la cadence de livraison apparait a peine. La cadence est un resultat de votre topologie de sandboxes, pas une entree independante, et les equipes qui choisissent selon la cadence souhaitee obtiennent un processus que leurs environnements ne peuvent pas soutenir.
main avec la production et traitez l'ecart comme un vrai
backlog, pas une curiosite. C'est en general la que sont les surprises.
Le modele qui survit au contact d'une vraie equipe est celui que le pipeline impose, pas celui du document d'accueil. Si un consultant doit se souvenir des regles de branches, elles sauteront des la premiere semaine de livraison chargee. Serpent fonctionne par tickets avec Git en arriere-plan : la branche, la pull request et le chemin de promotion viennent du ticket, pas de la memoire. D'autres guides de pipeline vivent dans notre bibliotheque SF Guides.
Le trunk-based est-il realiste pour une equipe d'administrateurs ?
Oui, et c'est generalement plus simple que GitFlow, car il n'y a qu'une branche a comprendre. La discipline qui compte, ce sont les branches courtes, pas la maitrise de Git.
Faut-il une branche Git par sandbox ?
Non. Une sandbox est une cible de deploiement. Associer une branche a chaque org est la cause principale des fusions de fusions et du cherry-pick permanent.
Combien de temps doit vivre une branche de fonctionnalite ?
Des jours. Un sprint est la limite haute. Au-dela, la derive des metadonnees et les conflits de profils coutent plus que la branche ne rapporte.
Comment gerer les hotfixes en trunk-based ?
Branchez depuis le dernier commit livre, corrigez, validez, deployez, puis refusionnez immediatement dans main pour ne pas perdre le correctif a la livraison suivante.
Le modele change-t-il pour les equipes 2GP ?
Oui. Branchez par version de package et testez en scratch orgs. Les branches d'environnement modelisent un paysage d'orgs vers lequel une equipe package ne livre pas.
Sans engagement.