
Andrew Hanna

Andrew Hanna

Kort antwoord: de Salesforce DevOps-categorie is groot geworden met org-naar-org deployment, dus haar bouwstenen zijn omgevingen en metadata, geen geversioneerde artefacten. Package-levering, 1GP, 2GP en managed packages, kwam er als bijzaak bij en wordt nog steeds vaak als upgrade verkocht. Daarom brengen de meeste ISV's en PDO's hun product in 2026 nog altijd uit met scripts die ze zelf hebben geschreven.
Een org-naar-org release is kort: bouw een change set, valideer tegen de doelomgeving, deploy. Een package-release heeft een heel andere vorm:
Alleen stap drie lijkt op een deployment. De rest is artefactbeheer, en een pipeline die omgevingen modelleert heeft daar geen plek voor.
Omdat daar het volume zit. De overgrote meerderheid van Salesforce-teams draait een productie-org met een waaier sandboxen, en hun releaseprobleem is oprecht: "krijg deze wijziging van UAT naar productie zonder iets te slopen." Copado, Gearset, AutoRABIT, Flosum, Salto en Blue Canvas hebben allemaal sterke producten gebouwd tegen dat probleem, met hetzelfde model: omgevingen, branches, metadata, diffs.
Geen van die bouwstenen bevat een versienummer. Een package is geen diff tussen twee orgs. Het is een onveranderlijk artefact met een identiteit, een voorouder en een populatie installaties in orgs die jij niet beheert.
Omdat het ecosysteem hun dat vertelt. Zoek op hoe je een 2GP-package uitbrengt en je
vindt stapsgewijze gidsen om zelf een pipeline te bouwen in Azure DevOps of GitHub
Actions, met sf package version create en
sf package version promote handmatig aan elkaar geknoopt. Salesforce'
eigen
gids voor second-generation managed packaging
zegt het onomwonden: packaging-operaties draai je via de CLI, of je automatiseert ze
met scripts.
Dat is een prima antwoord voor een platform. Het is een vreemd antwoord voor een categorie die releaseautomatisering verkoopt.
Ondertussen beweegt het platform door.
Package Migrations werd algemeen beschikbaar in Summer '25, met sf package convert om een 1GP-versie in een 2GP-versie om te
zetten en een --migrate-to-2gp push upgrade die subscribers omzet zonder
herinstallatie. Een 1GP-uitgever heeft nu een echt migratiepad, en een echte behoefte
aan een pipeline die beide generaties tegelijk snapt. De meeste tooling behandelt
packaging nog als een integratie die je erbij schroeft.
Drie dingen, en ze versterken elkaar:
De toets is simpel: kan dezelfde pipeline die een org-wijziging uitrolt ook een versie snijden, afhankelijkheden oplossen, in een testmatrix installeren, promoveren en subscribers volgen, zonder het product te verlaten? Op hetzelfde plan, niet op het enterprise-plan.
Dat is het gat waar Serpent omheen is gebouwd, ontstaan uit het draaien van een eHealth-ISV door managed packages en de AppExchange security review. 1GP-, 2GP- en managed-packageworkflows, cross-package dependency resolution, versiebeheer over subscriber-orgs en AppExchange-releaseworkflows zitten in elk plan, ook het gratis plan, met voorverwarmde scratch org pooling op Scale zodat validatie in een schone org betaalbaar blijft. Bekijk hoe Serpent package-levering aanpakt.
Is 2GP verplicht, of kan ik op 1GP blijven?
Je kunt blijven, maar de platforminvestering gaat naar 2GP. Package Migrations, algemeen beschikbaar sinds Summer '25, converteert een 1GP-versie en zet subscribers om met een push upgrade.
Kan ik niet gewoon GitHub Actions gebruiken?
Dat kan, en veel teams doen het. De prijs is dat jij eigenaar wordt van de ancestrylogica, de afhankelijkheidsvolgorde, de subscribertracking en de persoon die het allemaal snapt.
Geldt dit alleen voor AppExchange-ISV's?
Nee. Elk team dat unlocked of managed packages gebruikt voor interne modulariteit raakt dezelfde bouwstenen, minus de security review.
Wat is het lastigste deel van een packagerelease?
Ancestry en promotie, want beide zijn onomkeerbaar. Een verkeerde voorouder breekt het upgradepad voor elke subscriber, en een gepromoveerde versie kun je niet terugdraaien.
Vrijblijvend.