Andrew Hanna

Andrew Hanna

Click deploy terugdraaien: hoe je een Salesforce-deployment ongedaan maakt

Click deploy terugdraaien: hoe je een Salesforce-deployment ongedaan maakt

TL;DR: Een click deploy in Salesforce heeft geen ingebouwde undo-knop. De Metadata API draait een mislukte deployment terug, maar na een geslaagde deployment betekent teruggaan: de vorige versie opnieuw deployen, verwijderen wat is toegevoegd en data met de hand herstellen. Maak een snapshot voordat je klikt, of gebruik een tool die dat voor je doet.

Wat is een click deploy in Salesforce?

Bij een click deploy verplaats je metadata tussen orgs via een interface: je vergelijkt een bron en een doel, vinkt de gewijzigde componenten aan, valideert en deployt, zonder change set en zonder commandline. De term komt van ClickDeploy, dat Copado nu verkoopt als Copado Essentials; de tool en de prijzen bespreken we in hoe ClickDeploy werkt en wat het kost. De meeste gidsen stoppen bij de deploy. Deze gaat over wat er gebeurt als je hem moet terugdraaien.

Wat gebeurt er als een click deploy mislukt?

In productie verandert er niets. Salesforce accepteert daar alleen all-or-none-deployments (de optie rollbackOnError moet true zijn), dus de Metadata API draait bij een fout de hele transactie terug en de org blijft zoals hij was. De Salesforce CLI draait standaard terug en laat je dat omzeilen met --ignore-errors, maar de eigen referentie zegt dat je dat nooit tegen productie moet gebruiken, omdat componenten met fouten worden overgeslagen en de org inconsistent kan raken. Mislukt een deploy, los dan de oorzaak op en draai hem opnieuw; onze gids over click deploy-fouten loopt de bekende boosdoeners langs.

Kun je een geslaagde click deploy ongedaan maken?

Niet standaard. Zoals Gearset het verwoordt, kunnen change sets een deployment niet terugdraaien en DevOps Center ook niet, en met change sets kun je bovendien geen destructieve wijzigingen doen. Een geslaagde deploy is gewoon de nieuwe staat van de org. Om terug te gaan draai je een tweede deployment die de oude staat herstelt, en dat werkt alleen als je daar een kopie van hebt bewaard.

Daarom is de backup, niet de rollback, de stap die ertoe doet. Als niemand de doelcomponenten vóór de klik heeft vastgelegd, bouw je ze uit je geheugen opnieuw op.

Hoe draai je een click deploy stap voor stap terug?

  1. Kies: terugdraaien of vooruit fixen. Is de oorzaak duidelijk en de fix klein, dan houd je met een fix de rest van de release. Draai terug als de diagnose te lang duurt of de wijziging actief schade doet.
  2. Zoek de versie van vóór de deploy. Gebruik de snapshot van je tool, of de laatste commit in Git die overeenkomt met productie. Heb je geen van beide, haal dan op wat je kunt uit een sandbox die sindsdien niet is ververst.
  3. Bouw het rollbackpakket. Componenten die de deploy wijzigde gaan terug in hun vorige versie. Componenten die de deploy toevoegde komen in een destructiveChangesPost.xml-manifest, zodat ze worden verwijderd nadat het herstel slaagt.
  4. Valideer eerst. Draai het als check-only-deployment (--dry-run in de CLI) met hetzelfde Apex-testniveau als bij elke productierelease.
  5. Deploy en controleer. Deploy en test daarna de geraakte pagina's, flows en integraties. Leg vast wat is teruggedraaid en waarom.
  6. Controleer de data. Een metadata-rollback herstelt geen records. Behandel data apart, zoals hieronder beschreven.

Bij stap 2 en 3 gaan de meeste rollbacks mis. Daarom maakt de click deploy-checklist een backup onderdeel van de voorbereiding, niet iets voor achteraf.

Welke click deploy-tools hebben rollback?

  • Copado Essentials: kies Deploy with backup en er verschijnt een Rollback-knop op het deploymentrecord, volgens het helpcenter. Rollback van CI-jobs vereist een Git-repository als bron.
  • Gearset: slaat vóór elke deployment een snapshot van de metadata van de doel-org op en ondersteunt volledige of gedeeltelijke rollback, volgens de documentatie.
  • AutoRABIT: rollback werkt alleen als Take Backup aan stond bij de oorspronkelijke deployment, meldt de knowledge base, en je kunt componenten uitsluiten.

Stel Salto, Flosum, Blue Canvas en elke andere tool op je shortlist dezelfde twee vragen: is de backup automatisch of moet je hem aanzetten, en kun je één component terugdraaien zonder de hele release terug te zetten?

Wat kan een rollback niet ongedaan maken?

  • Data. Deployment-rollbacks gaan alleen over metadata. Records die een nieuwe flow of trigger heeft gewijzigd, blijven gewijzigd.
  • Verwijderde velden, netjes. Salesforce bewaart een verwijderd custom field 15 dagen, maar Salesforce Ben somt op wat je na een undelete zelf opnieuw moet instellen, zoals verplichte en unieke instellingen en field history tracking.
  • Een purge. Verwijderen met --purge-on-delete slaat de prullenbak over, dus er valt niets te herstellen.

De betrouwbaardere oplossing is een geschiedenis die je opnieuw kunt afspelen. Deployen vanaf een branch betekent dat elke release is gecommit voordat hij live ging, zoals je leest in click deploy vanuit Git.

Hoe pakt Tekunda rollback aan?

Tekunda is het Salesforce-consultancy- en productbedrijf achter Serpent, het DevOps-platform dat het ook voor zijn eigen klantprojecten gebruikt. Serpent houdt de klik-en-selecteer-workflow, terwijl Git en pull requests eronder draaien, zodat elke release een versie heeft om naar terug te gaan. Rollback is één klik, voor één component of een volledige release. Teams op Copado kunnen ons migratiepad volgen, de plannen staan op de prijspagina en meer gidsen vind je in de SF Guides-bibliotheek.

FAQ

Heeft Salesforce een rollback-knop voor deployments?

Nee. Change sets en DevOps Center kunnen een deployment niet terugdraaien. Je deployt de vorige versie opnieuw of gebruikt een tool die de org eerst vastlegt.

Verandert een mislukte click deploy iets?

Niet in productie, waar Salesforce all-or-none-deployments verplicht. Ook de Salesforce CLI draait bij een fout terug, tenzij je --ignore-errors meegeeft.

Kan ik data terugdraaien met een deployment-rollback?

Nee. Rollbacks herstellen alleen metadata, dus records hebben een aparte databackup en -restore nodig.

Hoe lang kan ik een verwijderd custom field herstellen?

15 dagen, tenzij het is gewist of gepurged. Sommige eigenschappen moet je daarna met de hand herstellen.

Gerelateerde artikelen

Benieuwd naar sneller releasen voordat je instapt? Laten we praten

Vrijblijvend.