
Serpent Team

Andrew Hanna

Réponse courte : automatiser les déploiements Salesforce avec des
scratch orgs, c'est faire créer par votre job de CI une org jetable à partir d'un
fichier de définition, y installer vos dépendances, déployer vos sources, lancer les
tests, puis supprimer l'org. Les briques sont un Dev Hub, un fichier de définition de
scratch org, sfdx-project.json et quatre ou cinq commandes CLI. Ce qui
décide de la survie du dispositif en équipe réelle n'est pas le script, ce sont les
limites des scratch orgs.
Une scratch org est une org jetable, pilotée par la source et créée depuis un fichier de configuration : sa forme vit dans votre dépôt et non dans la mémoire de quelqu'un. Utilisez-la quand l'environnement doit être défini par du code et jeté ensuite : développement par fonctionnalité, validation par pull request, construction et test d'installation de packages.
Restez sur une sandbox s'il vous faut un volume de données proche de la production ou un endpoint d'intégration durable. Les scratch orgs plafonnent autour de 200 Mo d'enregistrements et 50 Mo de fichiers, et elles expirent (Salesforce Ben).
Le fichier de définition est le plan. Seul edition est obligatoire, avec
des valeurs comme Developer, Enterprise, Group, Professional et leurs équivalents
Partner. Les clés à connaître (Salesforce DX Developer Guide) :
Gardez un fichier de définition par usage. Une définition de CI doit être minimale et rapide ; une définition de démo peut embarquer des données d'exemple. Mélanger les deux, c'est transformer un contrôle de pull request en trois minutes d'attente.
Les scratch orgs utilisent le source tracking : vous déployez votre projet vers l'org
et récupérez les changements en sens inverse. Avec la CLI actuelle, c'est
sf project deploy start pour pousser et
sf project retrieve start pour récupérer ; les anciennes commandes
force:source:push et force:source:deploy y ont été
regroupées (Salesforce DX Developer Guide).
Les dépendances viennent de sfdx-project.json. Le job de CI y lit le
namespace et les dépendances de packages, puis les installe avant vos propres sources.
C'est pourquoi un build qui passe en local et échoue en CI est presque toujours un
problème d'ordre des dépendances, pas de métadonnées.
sf org create scratch --definition-file config/project-scratch-def.json --alias
ci, avec la durée utile la plus courte.
sfdx-project.json.
sf project deploy start.
L'étape sept est celle que les équipes oublient, et celle qui casse silencieusement le pipeline une semaine plus tard.
C'est là que la plupart des guides s'arrêtent, et là que les pipelines réels cèdent. Quatre points à anticiper :
sf org list limits avant de concevoir le workflow, pas
après.
Si vous touchez le plafond, les options honnêtes sont : réserver l'org par PR aux changements qui touchent les métadonnées packagées, utiliser une org partagée durable pour le reste, ou exploiter un pool. Serpent fournit des scratch orgs sur tous les plans et ajoute le pooling préchauffé sur Scale et Enterprise, pour que l'org attende déjà quand le pipeline la demande.
Faut-il un Dev Hub pour utiliser les scratch orgs ?
Oui. Les scratch orgs sont créées contre un Dev Hub activé, qui compte aussi vos allocations quotidiennes et actives.
Un ISV peut-il construire ses packages ainsi ?
Oui, et c'est la voie standard. Construisez et installez la version de package dans une scratch org neuve à chaque exécution, pour que les échecs d'installation apparaissent en CI et non chez un abonné.
Quelle différence entre une org shape et un snapshot ?
Une shape copie la configuration d'une org existante dans une nouvelle org vide. Un snapshot copie une scratch org à un instant donné, avec ce qui y était déjà déployé.
Chaque pull request doit-elle avoir sa scratch org ?
Seulement si votre allocation le permet. Avec 3 orgs actives, un dépôt chargé a besoin d'un pool ou d'une org de validation partagée.
D'autres guides pas à pas sur le DevOps Salesforce se trouvent dans notre bibliothèque SF Guides.
Sans engagement.