Erfassen Sie Ihre Fortschritte
Trailhead-Startseite
Trailhead-Startseite

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 DreamHouse-Beispielanwendung und Installieren der Anwendung in einem Trailhead Playground

Darum lieben wir die Paketentwicklung

Unserer Meinung nach ist die Paketentwicklung eine der spannendsten neuen Funktionen für Salesforce Platform-Entwickler. Sie steht bekannten, revolutionären Innovationen, wie z. B. geschnittenem Brot, Heimvideo 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 neuen Funktionen von Salesforce DX: Projekte, quellenbezogene Entwicklungsbefehle und Testorganisationen wurden spezielle für die Paketentwicklung konzipiert.
  • Packt alle Änderungen, die Sie zwischen den Phasen des Lebenszyklus nachverfolgen, in einem versionierten Artefakt.
  • 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 freigeschaltetes Paket kann von mehreren freigeschalteten und klassischen Paketen abhängen.
  • 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.

Da Sie jetzt die Vorteile der Paketentwicklung kennen, zeigen wir Ihnen als Nächstes, wie Sie ein freigeschaltetes Paket erstellen.

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, und alle Ihre Quellen sind im Salesforce DX-Projektformat enthalten (und in Ihr Versionskontrollsystem übertragen (Commit)). 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. Spielend einfach.

Konfigurieren Sie Ihre Umgebung

Bevor Sie in die Vollen gehen können, sollten wir sicherstellen, dass alles eingerichtet ist, was Sie für die anstehende Herausforderung benötigen.

  • Haben Sie bereits einen Developer Hub (Dev Hub) eingerichtet und die Salesforce-Befehlszeilenschnittstelle (Salesforce CLI) installiert? Wechseln Sie zu dieser Einheit im Modul "App Development with Salesforce DX", um Einzelheiten dazu zu erfahren.
  • Haben Sie einen GitHub-Account?
  • Haben Sie "packaging" in Ihrer Dev Hub-Organisation aktiviert? Geben Sie unter "Setup" im Feld "Schnellsuche" den Text Dev Hub ein und wählen Sie Dev Hub aus. Klicken Sie auf Enable Unlocked Packages and Second-Generation Managed Packages.

Abrufen des DreamHouse-Quellcodes mit Git

Nehmen wir zu Vorführungszwecken an, dass Sie die DreamHouse-Anwendung für eines Ihrer Unternehmensteams erstellen und bereitstellen.

Falls Sie gerade Salesforce DX-Funktionen und -Tools verwenden, sind Sie eventuell bereits mit dem DreamHouse-Beispielrepository vertraut. DreamHouse ist eine eigenständige Anwendung, die viele in Salesforce Platform verfügbare Funktionen bietet. Sie verwendet Lightning-Komponenten, Apex, Benachrichtigungen, Einstein, den Prozessgenerator und mehr. 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 DreamHouse-Quellcode 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 DreamHouse-Anwendung.

  1. Laden Sie den Quellcode aus dem GitHub-Repository von DreamHouse herunter.
  2. Klicken Sie auf Clone or download (Klonen oder Herunterladen).
  3. Kopieren Sie den HTTPS-Link in das Repository.
  4. 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-sfdx.git

Beachten Sie bitte, dass die Quelle die Salesforce DX-Projektstruktur aufweist und eine DX-Projektdatei sowie die Definition einer Testorganisation enthält. Da das DreamHouse-Repo laufend aktualisiert wird, sollten Sie sich keine Gedanken machen, wenn Ihre Version des Projekts etwas anders aussieht.

Zeigt die vollständige Verzeichnisstruktur 'dreamhouse-sfdx', wenn Sie beispielsweise Finder oder Windows Explorer für die Anzeige verwenden

Erstellen eines Pakets und einer Paketversion

Wenn Sie schon eine Weile auf diesem Trail unterwegs sind, sind Sie wahrscheinlich schon bei Ihrer Dev Hub-Organisation angemeldet.

  1. Im Befehlsfenster stellen wir zunächst sicher, dass die Dev Hub-Organisation verbunden ist.
    sfdx force: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. Wenn ein (U) angezeigt, werden standardmäßig alle CLI-Befehle unter diesem Benutzernamen ausgeführt.

    === Orgs
         ALIAS       USERNAME                         ORG ID              CONNECTED STATUS
    ───  ──────────  ───────────────────────────────  ──────────────────  ────────────────
    (D)  DevHub      myDevHub@example.com             00DB0000000Ige5MAC  Connected
         MyTP        myName@cunning-bear-311000.com   00D6A000000fH8CUAU  Connected
         TestingOrg  name@example.com                 00DB0000000Im58MAC  Connected
    
    ALIAS     SCRATCH ORG NAME  USERNAME             ORG ID              EXPIRATION  DATE
    ────────  ────────────────  ───────────────────  ──────────────────  ────────────────
    Scratch1  myAcme            test@example.com     00DZ000000N8ItoMAF  2018-03-01

    Wenn Sie das Modul "Anwendungsentwicklung mit Salesforce DX" abgeschlossen haben, wird wahrscheinlich angezeigt, dass Sie mit einer Trailhead Playground-Organisation verbunden sind. Eventuell werden auch eine oder mehrere Testorganisationen aufgeführt, die Sie zum Durchführen der praktischen Aufgabe erstellt haben.

    Falls Ihr Dev Hub nicht verbunden ist, melden Sie sich bei ihm an:
    sfdx force:auth:web:login -d -a DevHub
  2. Wechseln Sie zum Verzeichnis dreamhouse-sfdx.
  3. Öffnen Sie sfdx-project.json in Ihrem bevorzugten Texteditor.
    DreamHouse ist ein Open-Source-Projekt mit vielen Beteiligten. Um sicherzustellen, dass Sie die Aufgabe erfolgreich absolvieren können, stellen wir sicher, dass Ihre Projektdatei zu Anfang wie diese aussieht.
    {
       "packageDirectories": [
          {
             "path": "force-app",
             "default": true
          }
       ],
       "namespace": "",
       "sfdcLoginUrl": "https://login.salesforce.com",
       "sourceApiVersion": "44.0"
    }
  4. Löschen Sie bei Bedarf einige vorhandene Parameter, wie etwa id, versionName und versionNumber. Ändern Sie sourceApiVersion entsprechend der Version der Salesforce CLI. Vergessen Sie nicht zu speichern!

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.

Wichtig

Wichtig

Wenn Sie Metadaten aus Ihrer "glückbringenden Suppe" in ein freigeschaltetes Paket migrieren, erstellen Sie Ihre freigeschalteten Pakete ohne Namespace. Dies hat den Vorteil, dass sich beim Übergang der Metadaten aus dem nicht gepackten Zustand in ein freigeschaltetes Paket der API-Name der Metadatenelemente nicht ändert.

Erstellen des Pakets

Beim Herunterladen der DreamHouse-Anwendung aus GitHub haben Sie alle Quelldateien in Ihr Projektverzeichnis geladen. Sie können jetzt ohne viel Tamtam das Basispaket erstellen.

Hinweis

Hinweis

Dieser Abschnitt enthält den Workflow für die Erstellung eines Pakets unter Verwendung des DreamHouse-Beispiel-Repos. Wenn Sie die praktische Aufgabe am Ende dieser Einheit absolvieren möchten, sollten Sie sich zurückhalten und die Anweisungen in der Einheit befolgen, wobei Sie diesen Workflow als Referenz verwenden.

  1. 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:
    sfdx force:package:create --name dreamhouse --description "My Package" --packagetype Unlocked --path force-app --nonamespace --targetdevhubusername 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.

    Der Paketalias ist jetzt mit der Paket-ID (0Ho) verknüpft. Sie müssen sich also keine unverständlichen Paketerstellungs-ID mehr merken! Diejenigen unter Ihnen, die sich Zahlen schnell merken können, dürfen gerne weiterhin die Paketerstellungs-IDs beim Ausführen der Befehle verwenden.

    === Ids
    NAME                  VALUE
    ───────────────────── ──────────────────
    Package Id           0Hoxxx
  2. Ö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": "44.0",
       "packageAliases": {
          "dreamhouse": "0Hoxxx"
       }
    }
    Tipp

    Tipp

    Falls Sie den Paketalias oder die Paket-ID vergessen, können Sie alle von Ihnen erstellten Pakete in Ihrer Dev Hub-Organisation auflisten, indem Sie den Befehl sfdx force:package:list ausführen.

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 Paketentwicklungs-Lebenszyklus durchzuführen.

sfdx force:org:create --definitionfile config/project-scratch-def.json --durationdays 30 --setalias MyScratchOrg -v DevHub

Verwenden Sie 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.

  1. Öffnen Sie die Datei sfdx-project.json in Ihrem bevorzugten Texteditor, um die Paketversionsoptionen zu ändern.
  2. Ändern Sie den "versionName" in Version 1.0 und "versionNumber" in 1.0.0.NEXT.

    Das Verzeichnis force-app ist das standardmäßige (und einzige) Paketverzeichnis, das heißt, jede Quelle, die darin enthalten ist, wird Teil des Pakets. 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": "44.0",
       "packageAliases": {
          "dreamhouse": "0Hoxxx"
       }
    }
  3. Speichern Sie die Datei sfdx-project.json.
  4. Erstellen Sie im Verzeichnis dreamhouse-sfdx die Paketversion, die die Metadaten mit dem Paket verknüpft.
    sfdx force:package:version:create -p dreamhouse -d force-app -k test1234 --wait 10 -v 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.

    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 "sfdx force:package:install" command.
  5. 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"
    }
  6. Verwenden Sie den Paketversionsalias, um die Paketversion in der vorhin erstellten Testorganisation zu installieren.
    sfdx force:package:install --wait 10 --publishwait 10 --package dreamhouse@1.0.0-1 -k test1234 -r -u MyScratchOrg

    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.

  7. Öffnen Sie nach der Installation des Pakets die Testorganisation, um sich das Paket anzusehen.
    sfdx force:org:open -u MyScratchOrg
  8. Geben Sie in Setup im Feld "Schnellsuche" den Text Installierte Pakete ein und wählen Sie dann Installierte Pakete aus.Zeigt das Dialogfeld "Installierte Pakete" mit "dreamhouse" unter "Installierte Pakete". Angegeben werden auch Dev Hub-Name, Paketversion sowie Datum und Uhrzeit der Installation.

    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 DreamHouse-Anwendung 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.

sfdx force:package:version:promote -p dreamhouse@1.0.0-1 -v 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.

  1. Wenn Sie die Paketversion in Ihrem Trailhead Playground installieren möchten, melden Sie sich bei ihm an.
    sfdx force:auth:web:login -a MyTP

    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.

  2. Installieren Sie die Paketversion im Trailhead Playground.
    sfdx force:package:install --wait 10 --publishwait 10 --package dreamhouse@1.0.0-1 -k test1234 -r -u MyTP
  3. Öffnen Sie Ihren Trailhead Playground.
    sfdx force:org:open -u MyTP
  4. Geben Sie in Ihrem Trailhead Playground unter Setup im Feld "Schnellsuch" 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.

  5. Klicken Sie auf dreamhouse und dann auf Komponenten anzeigen.Wenn Sie bei 'dreamhouse' auf 'Komponenten anzeigen' klicken, wird eine Liste mit sämtlichen Paketkomponenten angezeigt.
  6. Suchen und wählen Sie im App Launcher die Anwendung DreamHouse aus und probieren Sie einige ihrer Funktionen aus.
Beispiel für eine E-Mail-Nachricht, die Sie erhalten, wenn das Dreamhouse-Paket erfolgreich im Trailhead Playground installiert wurde.