Zweimal Continuous Integration mit SalesforceDX und CircleCI 2.0
Continuous Integration gab es schon vor DX. Mit Ant zum Beispiel. Oder CumulusCI. SalesforceDX macht es schlicht (noch) einfacher. Und mit CircleCI 2.0 braucht es nur einfache bash Kenntnisse, um ein effizientes CI Setup für eigene Projekte zu erstellen.
Die wichtigste Lektion für mich dabei: Ein CI Prozeß muß kuriert und gehärtet werden, bis er wirklich flutscht. Das ist eine Lernkuvrve, die nach und nach abnimmt, aber selbst mit Anleitung keinem erspart bleibt. Manchmal macht es Salesforce einem auch nicht leicht, wenn sich Pfade, Installations-URLs oder sonst was unangekündigt ändert. Seid gewarnt.
Die zweitwichtigste: Parallelismus. Für open source Projekte bietet CircleCI 4 Container kostenlos an. Container könnt ihr euch als eigene, unabhängige Rechner vorstellen. Durch Scratch Orgs und der Möglichkeit, den Namespace mitzunehmen, können mit CircleCI 1000 Tests sehr einfach auf 4 Scratch Orgs (und 4 Container) verteilt werden. Dadurch wird die Build Zeit stark reduziert, die Entwickler drehen weniger Däumchen.
Wie das alles genau geht, zeigen zwei Community Voträge aus jüngster Zeit.
ForceAcademyLA: Gear up for Continuous Integration
Daniel Stange erklärt nicht nur das Aufsetzen eines neuen Projektes mittels CircleCI Schritt für Schritt, sondern legt auch noch Code Quality Tools oben drauf.
Repo: https://.github.com/dstdia/ForceAcademy18
Slides: https://www.slideshare.net/DanielStange2/gear-up-for-continuous-integration-with-salesforce-dx-circle-ci-and-clayton
DreamOlé: From Zero to CI in 30 minutes
In Barcelona habe ich ebenfalls über CircleCI gesprochen. Mein Fokus lag auf o.g. Parallelismus und unterschiedliche Wege, sich mit Orgs zu verbinden. Es muß nicht immer eine Connected App sein.
Repo: https://github.com/Szandor72/dreamole18-ci-in-30-minutes
Slides: https://docs.google.com/presentation/d/16Bips8nfEFayiEhfbzSkEPNAsUb_cWKdcSB-K1qACzU/edit?usp=sharing
PS: Noch ein CircleCI Tip
Wenn ihr mal etwas ins Repo pushen wollt, ohne CI anzustpsen, fügt [skip ci]
in die commit message.