Erstellen Ihres ersten Pakets
Lernziele
Nachdem Sie diese Lektion abgeschlossen haben, sind Sie in der Lage, die folgenden Aufgaben auszuführen:
- Kennenlernen der Befehlszeilenbefehle für die Paketerstellung
- Beschreiben der grundlegenden Anwendungsfälle für die Paketerstellung
- Packen der Beispielanwendung DreamHouse LWC und Installieren der Anwendung in einem Trailhead Playground
Darum lieben wir die Paketentwicklung
Unserer Meinung nach ist die Paketentwicklung eine der spannendsten Funktionen für Salesforce Platform-Entwickler. Sie steht bekannten, revolutionären Innovationen, wie z. B. geschnittenem Brot, Video-Streaming-Diensten und dem Handy in nichts nach. Falls bei Ihnen jedoch noch mehr Überzeugungsarbeit notwendig ist, fassen wir hier nochmal die wichtigsten Vorteile zusammen, die bisher behandelt wurden. Paketentwicklung:
- Folgt bewährten Vorgehensweisen in Bezug auf den Lebenszyklus der Softwareentwicklung. Ist kompatibel mit den Funktionen von Salesforce DX: Projekte, CLI-Befehle und Testorganisationen wurden speziell für die Paketentwicklung konzipiert.
- Kapselt alle Änderungen, die Sie zwischen den Phasen des Lebenszyklus nachverfolgen, in einem Artefakt mit Versionsverwaltung.
- Erleichtert Ihnen, Forderungen nach neuen Funktionen umzusetzen. Sie können Komponenten in Ihrem Paket einfach hinzufügen, aktualisieren oder löschen.
- Bietet einen verbesserten Protokollverlauf, sodass Sie die an Ihrer Produktionsorganisation vorgenommenen Änderungen besser nachverfolgen und nachvollziehen können.
- Organisiert Quellen. Es lässt sich viel leichter feststellen, welche Komponenten zu welchen Anwendungen und Funktionen gehören.
- Fördert die iterative und modulare Entwicklung.
- Unterstützt Abhängigkeiten zwischen freigeschalteten Paketen. Ein einzelnes nicht gesperrtes Paket kann von mehreren nicht gesperrten Paketen sowie verwalteten Paketen der ersten und zweiten Generation abhängig sein.
- Unterstützt Continuous Integration und Continuous Delivery, da die CLI-Befehle für die Paketerstellung es ermöglichen, jeden Schritt in der Bereitstellungs-Pipeline vollständig zu automatisieren.
Einfache Anwendungsfälle der Paketentwicklung
Freigeschaltete Pakete eignen sich hervorragend für interne Geschäftsanwendungen. Nehmen wir Folgendes an:
- Ihre Finanzabteilung möchte, dass Ihr IT-Team eine Anwendung erstellt, mit der Mitarbeiter ihre Spesen einreichen können. Ihr Team beschließt, für die Entwicklung und Verteilung der Anwendung freigeschaltete Pakete zu verwenden.
- Ihre Personalabteilung möchte, dass Ihr IT-Team eine Anwendung erstellt, mit der Mitarbeiter potenzielle neue Mitarbeiter empfehlen können. Mitarbeiter sollen die Empfehlungsanwendung nutzen, um Stellenausschreibungen bekannt zu machen, Freunde zu empfehlen und Empfehlungsboni zu erhalten. Ihr Team beschließt, für die Entwicklung und Verteilung der Anwendung freigeschaltete Pakete zu verwenden.
Für jeden dieser Fälle beginnen Sie ein komplett neues Projekt. Alle Ihre Quellen sind in einem Salesforce DX-Projekt im Quellformat enthalten (und werden in Ihrem Versionskontrollsystem committet). Wenn eine dieser Anwendungen zur Verteilung bereit steht, erstellen Sie ein freigeschaltetes Paket, das Sie in einer Testorganisation oder Sandbox testen und dann in der Produktionsorganisation installieren. Falls das Team irgendwann eine neue Funktion benötigt, können Sie diese hinzufügen und eine neue Paketversion erstellen. Ganz einfach. einfach.
Da Sie jetzt die Vorteile der Paketentwicklung kennen, zeigen wir Ihnen als Nächstes, wie Sie ein nicht gesperrtes Paket erstellen.
Konfigurieren Sie Ihre Umgebung
Ehe es ans Eingemachte geht, muss ein neuer Trailhead Playground eingerichtet werden, in dem der Dev Hub und das Packen aktiviert sind.
- Um einen neuen Trailhead Playground zu erstellen, wechseln Sie zur praktischen Aufgabe am Ende dieser Lerneinheit. Klicken Sie auf die Playground-Informationen links neben der Schaltfläche "Starten".
Wählen Sie dann Create Playground (Playground erstellen) aus.
Hinweis: Es ist zwar möglich, einen vorhandenen Trailhead Playground wiederzuverwenden, aber wenn Sie mit einem neuen Playground beginnen, können Sie sicherstellen, dass Sie mit einer einwandfreien Umgebung arbeiten.
- Nachdem Sie einen neuen Trailhead Playground erstellt haben, klicken Sie auf Launch (Starten), um den Playground zu öffnen. Stellen Sie dann sicher, dass Sie sowohl den Benutzernamen als auch das Kennwort des Playgrounds kennen. Sie benötigen diese Informationen in einem der nächsten Schritte.
Siehe Abrufen Ihres Benutzernamens und Zurücksetzen Ihres Kennworts.
- Geben Sie in Ihrem Trailhead Playground unter "Setup" im Feld "Schnellsuche" den Text "Dev Hub" ein und wählen Sie Dev Hub aus. Klicken Sie auf Dev Hub aktivieren und dann auf Nicht gesperrte Pakete und verwaltete Pakete der zweiten Generation aktivieren.
- Erstellen Sie einen GitHub-Account, wenn Sie nicht bereits einen haben.
- Installieren Sie Salesforce CLI auf Ihrem Computer.
Abrufen des DreamHouse-Quellcodes mit Git
Nehmen wir zu Vorführungszwecken an, dass Sie die Anwendung DreamHouse LWC für eines Ihrer Unternehmensteams erstellen und bereitstellen.
Falls Sie derzeit Salesforce DX-Funktionen und -Tools verwenden, sind Sie eventuell bereits mit dem Beispielrepository DreamHouse LWC vertraut. DreamHouse LWC ist eine eigenständige Anwendung, die viele in Salesforce Platform verfügbare Funktionen bietet. Sie verwendet u. a. Lightning-Webkomponenten und Apex. In diese Anwendung können Sie nach Immobilien suchen und Immobilienmakler online kontaktieren.
Damit Sie sich ganz auf die Paketerstellung konzentrieren können, werden wir den Quellcode von DreamHouse LWC und die bereits erstellten Salesforce DX-Projektdateien herunterladen. In diesem Beispiel wird nur ein Paket verwendet, ein Salesforce DX-Projekt kann jedoch mehrere Pakete umfassen. Sie können verschiedene Pakete auf der Basis der Verzeichnisstruktur isolieren, können jedoch Komponenten gemeinsam nutzen, wo dies sinnvoll ist.
Wenn Sie ein Paket für diese Anwendung erstellen, können Sie es im Verlauf des Entwicklungslebenszyklus ganz leicht in Testorganisationen, UAT-Sandboxes und Produktionsorganisationen installieren.
Wir behandeln hier die einzelnen Schritte des ganzen Prozesses und verwenden dabei die Tools, die speziell für die Paketentwicklung konzipiert wurden.
Holen wir uns zunächst den Quellcode für die Anwendung "DreamHouse Lightning Web Components (LWC)".
Wechseln Sie in einem Befehlsfenster zu dem Verzeichnis, in dem Sie den Quellcode ablegen möchten, und führen Sie dann diesen Befehl aus.
git clone https://github.com/dreamhouseapp/dreamhouse-lwc.git
Der Befehl "git clone" erstellt unter Verwendung der Salesforce-DX-Projektstruktur den Ordner "dreamhouse-lwc" und enthält eine DX-Projektdatei und Definitionsdatei für Testorganisationen. Da das Repository "DreamHouse LWC" laufend aktualisiert wird, sollten Sie sich keine Gedanken machen, wenn Ihre Version des Projekts etwas anders aussieht.
Konfigurieren Ihres Pakets
- Ihr Trailhead Playground ist auch Ihre Dev Hub-Organisation. Um ein Paket zu erstellen, müssen wir uns zunächst bei Ihrer Dev Hub-Organisation autorisieren und dort anmelden.
sf org login web --set-default-dev-hub --alias DevHub
- Im Befehlsfenster stellen wir zunächst sicher, dass die Dev Hub-Organisation verbunden ist.
sf org list
In der Ausgabe dieses Befehls werden alle Organisationen aufgelistet, mit denen Sie verbunden sind, einschließlich Dev Hub-, Trailhead Playground- und Testorganisationen. Das (D) kennzeichnet Ihre Dev Hub-Standardorganisation.=== Orgs ALIAS USERNAME ORG ID CONNECTED STATUS ─── ────────── ─────────────────────────────── ────────────────── ──────────────── (D) DevHub myDevHub@example.com 00DB0000000Ige5MAC Connected MyTP myName@mindful-raccoon-8184t4.com 00D6A000000fH8CUAU Connected TestingOrg name@example.com 00D4x000006sFonEAE Connected ALIAS USERNAME ORG ID EXPIRATION DATE ──────── ─────────────────── ────────────────── ──────────────── Scratch1 test@example.com 00DZ000000N8ItoMAF 2021-02-24
- Wechseln Sie auf Ihrem Computer zum Verzeichnis "dreamhouse-lwc".
- Öffnen Sie "sfdx-project.json" in Ihrem bevorzugten Texteditor und notieren Sie sich die sourceApiVersion-Nummer.
- DreamHouse LWC ist ein Open-Source-Projekt mit vielen Mitwirkenden. Um sicherzustellen, dass Sie die Aufgabe erfolgreich absolvieren können, ersetzen Sie den Inhalt Ihrer "sfdx-project.json"-Datei durch den folgenden Code.
{ "packageDirectories": [ { "path": "force-app", "default": true } ], "namespace": "", "sfdcLoginUrl": "https://login.salesforce.com", "sourceApiVersion": "61.0" }
- Stellen Sie sicher, dass die sourceApiVersion-Nummer im Codeausschnitt mit der Versionsnummer aus der Originaldaten übereinstimmt, die Sie sich notiert haben. Sollte dies nicht der Fall sein, ändern Sie die sourceApiVersion-Nummer.
Warum verwenden wir bei diesem Beispiel keinen Namespace?
Ein Paket-Namespace ist für freigeschaltete Pakete zwar nicht zwingend notwendig, hilft jedoch, die Paketkomponenten zu organisieren. Da für Namespaces jedoch einige zusätzliche Einrichtungsschritte und Vorüberlegungen notwendig sind, verwenden wir sie in dieser Einheit nicht.
Erstellen des Pakets
Beim Kopieren der Anwendung DreamHouse LWC aus GitHub haben Sie alle Quelldateien in Ihr Projektverzeichnis geladen. Sie können jetzt ohne viel Tamtam das Basispaket erstellen.
Dieser Abschnitt enthält den Workflow für die Erstellung eines Pakets unter Verwendung des Beispiel-Repositorys "DreamHouse LWC".
- Wechseln Sie über ein Terminal oder eine Eingabeaufforderung zum Verzeichnis "dreamhouse-lwc".
- Erstellen Sie ein freigeschaltetes Paket ohne Namespace und geben Sie den Alias oder Benutzernamen für Ihre Dev Hub-Organisation an, falls dieser nicht bereits als Standard festgelegt ist:
sf package create --name dreamhouse --description "My Package" --package-type Unlocked --path force-app --no-namespace --target-dev-hub DevHub
- --name ist der Paketname. Dieser Name ist ein Alias, den Sie bei der Ausführung nachfolgender Paketerstellungsbefehle verwenden können.
- --path ist das Verzeichnis, das den Inhalt des Pakets enthält.
- --packagetype gibt an, welche Art von Paket Sie erstellen; in diesem Fall ist es ein freigeschaltetes Paket.
- Öffnen Sie sfdx-project.json. Tusch! In packageDirectories sehen Sie den von Ihnen definierten Paketnamen mit Platzhaltern für Versionsname und -nummer. Der Befehl erstellt zudem den Abschnitt packageAliases, der den Paketnamen (Alias) seiner zugehörigen Paket-ID (0Ho) zuordnet.
{ "packageDirectories": [ { "path": "force-app", "default": true, "package": "dreamhouse", "versionName": "ver 0.1", "versionNumber": "0.1.0.NEXT" } ], "namespace": "", "sfdcLoginUrl": "https://login.salesforce.com", "sourceApiVersion": "61.0", "packageAliases": { "dreamhouse": "0Hoxxx" } }
Erstellen einer Testorganisation zum Testen Ihrer Paketversion
Wir erstellen jetzt eine Testorganisation mit dem Alias "MyScratchOrg", in der das freigeschaltete Paket installiert werden soll. Das Testen in einer Testorganisation ist eine praktische Methode, die Einheitentestphase des Lebenszyklus der Paketentwicklung durchzuführen.
sf org create scratch --definition-file config/project-scratch-def.json --duration-days 30 --alias MyScratchOrg --target-dev-hub DevHub
Dieser Befehl verwendet die Standarddefinition für Testorganisationen, die eine Developer Edition-Testorganisation erstellt, deren Edition Ihrem Trailhead Playground entspricht. Wie Sie sehen, ist die Dauer auf 30 Tage festgelegt, was Ihnen ausreichend Zeit für den Abschluss Ihrer Arbeit innerhalb eines Entwicklungssprints (bzw. für den Abschluss dieses Trailhead-Moduls) gibt.
Erstellen und Installieren der Paketversion in Ihrer Testorganisation
Wenn Sie bereit sind, das Paket zu veröffentlichen, erstellen Sie eine Momentaufnahme davon, also die sogenannte Paketversion. Die Installation der Paketversion ähnelt der Verteilung von Metadaten. Denken Sie daran: Nach der Erstellung fungiert die Paketversion als unveränderliches Artefakt, das eine bestimmte Menge an Metadaten enthält.
- Öffnen Sie die Datei sfdx-project.json in Ihrem bevorzugten Texteditor, um die Paketversionsoptionen zu ändern.
- Ändern Sie versionName in Version 1.0 und versionNumber in 1.0.0.NEXT. Das Verzeichnis "force-app" ist das standardmäßige (und einzige) Paketverzeichnis, was heißt, dass jede Quelle, die darin enthalten ist, Teil des Pakets wird. Nach der Änderung sieht die Datei sfdx-project.json so aus:
{ "packageDirectories": [ { "path": "force-app", "default": true, "package": "dreamhouse", "versionName": "Version 1.0", "versionNumber": "1.0.0.NEXT" } ], "namespace": "", "sfdcLoginUrl": "https://login.salesforce.com", "sourceApiVersion": "61.0", "packageAliases": { "dreamhouse": "0Hoxxx" } }
- Speichern Sie die Datei sfdx-project.json.
- Erstellen Sie im Verzeichnis "dreamhouse-lwc" die Paketversion, die die Metadaten mit dem Paket verknüpft.
Der Apex-Code in nicht gesperrten Paketen muss eine Mindestcodeabdeckung von 75 % erfüllen, ehe das Paket in einer Produktionsorganisation installiert werden kann. Wir haben in diesem Beispiel die Codeabdeckung nicht berechnet, weil wir wissen, dass dieses Beispiel-Repository "Dreamhouse LWC" nicht genügend Apex-Testabdeckung besitzt.sf package version create --package dreamhouse --installation-key test1234 --wait 10 --target-dev-hub DevHub
- -p ist der Paketalias, der der Paket-ID zugeordnet ist.
- -d ist das Verzeichnis, das den Inhalt des Pakets enthält.
- -k ist der Installationsschlüssel, der Ihr Paket davor schützt, von Unbefugten installiert zu werden.
- Es ist durchaus normal, dass die Erstellung der Paketversion mehrere Minuten dauert. Sie sehen Statusmeldungen, die Sie darüber informieren, was vor sich geht. Wenn die Erstellung der Paketversion abgeschlossen ist, sehen Sie diese Meldung.
Successfully created the package version [08cxxx]. Subscriber Package Version Id: 04txxx. Package Installation URL: https://login.salesforce.com/packaging/installPackage.apexp?p0=04txxx As an alternative, you can use the "sf package install" command.
- Bitte beachten Sie, dass der Abschnitt packageAliases in sfdx-project.json einen neuen Eintrag enthält.
"packageAliases": { "dreamhouse": "0Hoxxx", "dreamhouse@1.0.0-1": "04txxx" }
- Verwenden Sie den Paketversionsalias, um die Paketversion in der vorhin erstellten Testorganisation zu installieren. Es kann mehrere Minuten dauern, bis eine neu erstellte Paketversion in der Testorganisation zur Verfügung steht. Die Installation beginnt, sobald die Paketversion verfügbar ist. Wenn die Installation des Pakets abgeschlossen ist, wird diese Meldung angezeigt.
sf package install --wait 10 --publish-wait 10 --package dreamhouse@1.0.0-1 --installation-key test1234 --no-prompt --target-org MyScratchOrg
Successfully installed package [04t3XXX]
(Paket [04t3XXX] erfolgreich installiert) - Öffnen Sie nach der Installation des Pakets die Testorganisation, um sich das Paket anzusehen.
sf org open --target-org MyScratchOrg
- Geben Sie in Setup im Feld "Schnellsuche" den Text "Installierte Pakete" ein und wählen Sie dann Installierte Pakete aus. Da es sich um ein freigeschaltetes Paket handelt, können Sie Änderungen direkt in der Testorganisation vornehmen, anschließend die aktualisierten Metadaten herunterladen und dann eine neue Paketversion erstellen. Doch vorerst bietet Ihnen die Anwendung DreamHouse LWC alles Nötige, sodass wir fortfahren und das Paket veröffentlichen können.
Veröffentlichen der Paketversion
Ein Feature, das wir noch nicht besprochen haben, ist der Paketstatus. Wenn Sie Pakete zu Anfang erstellen, haben Pakete Beta-Status. Beta-Pakete können nicht in Produktionsorganisationen installiert werden. Dies ist ein Schutzmechanismus, der sicherstellen soll, dass die zu veröffentlichende Paketversion auch produktionsreif ist. Wenn Sie sicher sind, dass eine Version auf die Welt losgelassen werden kann, können Sie die zu veröffentlichende Paketversion hochstufen.
Das Beispiel-Repository "Dreamhouse LWC", das wir in dieser Einheit verwenden, entwickelt sich weiter und weist eventuell nicht genügend Apex-Tests auf, um die Anforderung einer Codeabdeckung von 75 % zu erfüllen. Wir überspringen also die Heraufstufung und verwenden weiterhin die von Ihnen erstellte Beta-Paketversion.
So sieht der Befehl zur Heraufstufung der Paketversion aus. Wenn Sie diesen Befehl jetzt ausprobieren, erhalten Sie jedoch eine Fehlermeldung.
sf package version promote --package dreamhouse@1.0.0-1 --target-dev-hub DevHub
Installieren der Paketversion in einer Organisation
Schließlich und endlich installieren Sie die Paketversion in Ihrer Organisation. Nicht vergessen: Sie können Beta-Paketversionen in Testversionen, Sandbox-Organisationen und Trailhead Playgrounds (DE-Organisationen) installieren. Eine veröffentlichte Version kann dagegen in jeder Organisation installiert werden. Normalerweise installieren Sie in dieser Phase die Paketversion in einer Sandbox. Für diese Übung werden wir das Paket jedoch in Ihrem Trailhead Playground installieren.
- Um die Paketversion in Ihrem Trailhead Playground zu installieren, müssen Sie sie zunächst Ihrer Liste autorisierter Organisationen hinzufügen.
Wir schlagen vor, Sie erstellen einen Alias für den Trailhead Playground wie "MyTP" in diesem Beispiel. Wenn Sie sich bei einer Organisation angemeldet haben, speichert die CLI Ihre Anmeldedaten. Sie müssen dann nur den Alias der Organisation kenn, wenn Sie nachfolgend Befehl absetzen. Falls Sie den Benutzernamen und das Kennwort für Ihren Trailhead Playground nicht kennen, lesen Sie bitte Abrufen Ihres Benutzernamens und Zurücksetzen Ihres Kennworts.sf org login web --alias MyTP
- Installieren Sie die Paketversion im Trailhead Playground.
sf package install --wait 10 --publish-wait 10 --package dreamhouse@1.0.0-1 --installation-key test1234 --no-prompt --target-org MyTP
- Öffnen Sie Ihren Trailhead Playground.
sf org open --target-org MyTP
- Geben Sie in Ihrem Trailhead Playground unter Setup im Feld "Schnellsuche" den Text "Installierte Pakete" ein und wählen Sie dann Installierte Pakete aus. Sie erhalten außerdem eine E-Mail, die bestätigt, dass Sie das freigeschaltete Paket erfolgreich installiert haben.
- Klicken Sie auf dreamhouse und dann auf View Components (Komponenten anzeigen).
- Suchen und wählen Sie im App Launcher die Anwendung DreamHouse aus und probieren Sie einige ihrer Funktionen aus.
Ressourcen