
Serpent Team

Andrew Hanna

Kort antwoord: Salesforce-deployments automatiseren met scratch orgs
betekent dat je CI-job een wegwerporg maakt op basis van een definitiebestand, je
dependencies installeert, je source deployt, de tests draait en de org weer
verwijdert. De onderdelen zijn een Dev Hub, een scratch org-definitiebestand,
sfdx-project.json en vier of vijf CLI-commando's. Wat bepaalt of het
standhoudt bij een echt team is niet het script, maar de limieten op scratch orgs.
Een scratch org is een wegwerporg die brongestuurd uit een configuratiebestand wordt gemaakt, zodat de vorm ervan in je repository staat en niet in iemands hoofd. Gebruik hem als de omgeving door code gedefinieerd hoort te zijn en weggegooid mag worden: ontwikkeling per feature, validatie per pull request, en het bouwen en testen van package-installaties.
Blijf bij een sandbox als je productieachtige datavolumes of een langlevend integratie-endpoint nodig hebt. Scratch orgs lopen tegen ongeveer 200MB aan records en 50MB aan bestanden aan, en ze verlopen (Salesforce Ben).
Het definitiebestand is de blauwdruk. Alleen edition is verplicht, met
waarden als Developer, Enterprise, Group, Professional en de Partner-varianten. De
sleutels die ertoe doen (Salesforce DX Developer Guide):
Houd een definitiebestand per doel aan. Een CI-definitie hoort minimaal en snel te zijn; een demodefinitie mag voorbeelddata dragen. Die twee mengen is precies hoe een pull request-check verandert in drie minuten wachten.
Scratch orgs gebruiken source tracking, dus je deployt je project naar de org en haalt
wijzigingen weer op. In de huidige CLI is dat sf project deploy start om
te pushen en sf project retrieve start om te pullen; de oudere commando's
force:source:push en force:source:deploy zijn daarin
samengevoegd (Salesforce DX Developer Guide).
Dependencies komen uit sfdx-project.json. De CI-job leest daar de
namespace en de package-dependencies en installeert die voordat je eigen source landt.
Daarom is een build die lokaal werkt maar in CI faalt meestal een volgordeprobleem met
dependencies, geen metadataprobleem.
sf org create scratch --definition-file config/project-scratch-def.json --alias
ci, met de kortst bruikbare looptijd.
sfdx-project.json.
sf project deploy start.Stap zeven is degene die teams vergeten, en degene die de pipeline een week later stilletjes breekt.
Hier stoppen de meeste handleidingen, en hier breken echte pipelines. Vier dingen om op te plannen:
sf org list limits vóór je de workflow ontwerpt,
niet erna.
Loop je tegen het plafond aan, dan zijn de eerlijke opties: reserveer orgs per PR voor wijzigingen die packaged metadata raken, gebruik een gedeelde langlevende org voor de rest, of draai een pool. Serpent geeft scratch orgs op elk plan en voegt op Scale en Enterprise voorverwarmde scratch org-pooling toe, zodat de org al klaarstaat voordat de pipeline erom vraagt.
Heb ik een Dev Hub nodig voor scratch orgs?
Ja. Scratch orgs worden aangemaakt tegen een ingeschakelde Dev Hub, en daar worden je dagelijkse en actieve toewijzingen ook geteld.
Kan een ISV zo packages bouwen?
Ja, en het is de standaardroute. Bouw en installeer de packageversie bij elke run in een verse scratch org, zodat installatiefouten in CI opduiken en niet bij een klant.
Wat is het verschil tussen een org shape en een snapshot?
Een shape kopieert de configuratie van een bestaande org naar een nieuwe lege org. Een snapshot kopieert een scratch org op een moment in de tijd, inclusief wat er al naartoe was gedeployed.
Moet elke pull request een eigen scratch org krijgen?
Alleen als je toewijzing dat aankan. Met 3 actieve orgs heeft een drukke repository pooling of een gedeelde validatie-org nodig.
Meer stapsgewijze Salesforce DevOps-gidsen staan in onze SF Guides-bibliotheek.
Vrijblijvend.