
Serpent Team

Andrew Hanna

Reponse courte : Salesforce n'a pas de bouton annuler. Un deploiement
de production qui echoue se defait tout seul, car rollbackOnError doit
etre a true en production, mais un deploiement qui reussit et se revele mauvais, c'est
a vous de le defaire. Vos options realistes sont un deploiement inverse depuis un
instantane pris avant la release, une suppression ciblee, ou un correctif en avant.
Celle dont vous disposerez se decide avant le deploiement, pas apres.
Salesforce ecrit les metadonnees directement dans l'org. Il n'y a pas de journal de
transactions a rembobiner ni de version precedente de l'org vers laquelle basculer.
L'API Metadata offre un seul filet de securite, et il ne couvre que l'echec franc :
pour un deploiement en production, rollbackOnError doit etre a true, donc
si un composant echoue, tout le paquet est abandonne et l'org reste intacte (guide developpeur de l'API Metadata Salesforce).
Ce filet ne sert a rien dans le cas que les equipes redoutent vraiment. Une release qui se deploie proprement, passe tous les tests, puis casse un processus metier a neuf heures du matin n'est pas un echec de deploiement au sens de Salesforce. La defaire suppose de construire un nouveau deploiement, et vous ne pouvez le construire qu'a partir de ce que vous avez capture avant.
C'est par la que tout plan de rollback devrait commencer, et c'est precisement la que la plupart se taisent. Classez votre release en trois categories avant d'ecrire la moindre etape.
C'est dans cette troisieme categorie que les plans de rollback cassent. Un rollback de metadonnees restaure la configuration, jamais les donnees. Si votre release a fait tourner une automatisation sur 400 000 enregistrements, redeployer l'Apex de la veille n'y change rien.
L'option la plus fiable. Si la branche qui a produit la release est dans Git, le commit precedent est votre artefact de rollback. Vous construisez un paquet a partir du dernier commit sain et vous le deployez par-dessus. Cela ne couvre que les composants modifies ou ajoutes, donc associez-le a la strategie trois.
Capturez l'etat de l'org cible juste avant le deploiement, puis servez-vous de cet instantane pour generer le paquet inverse si besoin. Cela couvre le cas ou l'org a derive par rapport a Git, ce qui est la norme dans la plupart des equipes Salesforce. Les outils de cette categorie automatisent la capture et le diff : Gearset, AutoRABIT et Blue Canvas documentent tous un rollback base sur instantane ou restauration, et Serpent propose un rollback en un clic sur toutes les offres, y compris l'offre gratuite.
Un deploiement inverse met a jour des composants qui existaient deja. Il ne retire pas
ceux que votre release a crees, donc un nouvel objet ou champ reste en place tant que
vous ne le supprimez pas explicitement. Cela passe par un manifeste
destructiveChanges.xml, un artefact separe que vous devez ecrire.
Utilisez destructiveChangesPre.xml pour supprimer avant les ajouts et
destructiveChangesPost.xml pour supprimer apres, ce qui denoue les
dependances comme une classe Apex qui reference encore l'objet a supprimer.
Souvent le bon choix. Si le defaut tient a une regle de validation ou a une ligne d'Apex, un correctif via le pipeline habituel est plus rapide et plus sur que d'inverser un paquet de 200 composants. Revenez en arriere quand le perimetre d'impact est inconnu. Corrigez en avant quand il est petit et compris.
Un rollback est une decision de conception prise au moment de la construction. Repondez a ces cinq points avant la mise en production.
Valider avant de deployer reste la prevention la moins chere. Une validation avec tests reste utilisable 10 jours et permet un quick deploy du meme paquet sans rejouer les tests Apex, donc decouvrir une erreur de compilation en production n'a plus d'excuse. D'autres guides de release sont dans notre bibliotheque SF Guides.
Salesforce annule-t-il automatiquement un deploiement rate ?
Oui, mais seulement ceux qui echouent. Les deploiements en production exigent
rollbackOnError a true, donc un composant en echec annule tout le paquet.
Un deploiement reussi n'est jamais defait pour vous.
Peut-on annuler un change set ?
Pas nativement. Il n'y a pas de bouton d'inversion, donc les equipes construisent un second change set qui redeploie la version precedente, ce qui suppose que quelqu'un l'ait capturee avant.
Un rollback de metadonnees restaure-t-il mes donnees ?
Non. Metadonnees et donnees sont deux problemes distincts. Revenir sur la configuration n'annule pas les enregistrements crees, modifies ou supprimes par une automatisation, il faut une sauvegarde et un plan de restauration.
Combien de temps pour recuperer un champ personnalise supprime ?
15 jours. Le champ reste dans Deleted Fields du Gestionnaire d'objets et peut etre restaure avec ses donnees dans cette fenetre, meme s'il faut parfois le remettre a la main sur les mises en page.
Sans engagement.