# Schnellstartanleitung für GitHub Packages

Veröffentlichen in GitHub Packages mit GitHub Actions.

> \[!NOTE]
> Auf GitHub Enterprise Server gehostete Runner werden aktuell nicht auf GitHub unterstützt.

## Einführung

In diesem Handbuch erstellen Sie einen GitHub Actions Workflow zum Testen des Codes und veröffentlichen ihn dann in GitHub Packages.

## Veröffentlichen Ihres Pakets

1. Erstellen Sie ein neues Repository auf GitHub und fügen Sie das `.gitignore` für Node hinzu. Weitere Informationen finden Sie unter [Ein neues Repository erstellen](/de/enterprise-server@3.22/repositories/creating-and-managing-repositories/creating-a-new-repository).

2. Klone das Repository auf deinen lokalen Computer.

   ```shell
   git clone https://YOUR-HOSTNAME/YOUR-USERNAME/YOUR-REPOSITORY.git
   cd YOUR-REPOSITORY
   ```

3. Erstelle eine `index.js` Datei, und füge eine einfache Benachrichtigung hinzu, um „Hallo Welt!“ zu sagen.

   ```javascript copy
   console.log("Hello, World!");
   ```

4. Initialisiere ein npm-Paket mit `npm init`. Gib dein Paket im Paketinitialisierungs-Assistenten mit dem Namen *`@YOUR-USERNAME/YOUR-REPOSITORY`* ein, und lege das Testskript auf `exit 0` fest. Dadurch wird eine `package.json`-Datei mit Informationen zu deinem Paket generiert.

   ```shell
   $ npm init
     ...
     package name: @YOUR-USERNAME/YOUR-REPOSITORY
     ...
     test command: exit 0
     ...
   ```

5. Führen Sie `npm install` aus, um die `package-lock.json`-Datei zu generieren, committen Sie dann und pushen Sie Ihre Änderungen nach GitHub.

   ```shell
   npm install
   git add index.js package.json package-lock.json
   git commit -m "initialize npm package"
   git push
   ```

6. Erstelle das Verzeichnis `.github/workflows`. Erstelle in diesem Verzeichnis eine Datei namens `release-package.yml`.

7. Kopieren Sie den folgenden YAML-Inhalt in die Datei `release-package.yml` und ersetzen Sie `YOUR-HOSTNAME` durch den Namen Ihres Unternehmens.

   ```yaml copy
   name: Node.js Package

   on:
     release:
       types: [created]

   jobs:
     build:
       runs-on: ubuntu-latest
       steps:
         - uses: actions/checkout@v6
         - uses: actions/setup-node@v7
           with:
             node-version: 20
         - run: npm ci
         - run: npm test

     publish-gpr:
       needs: build
       runs-on: ubuntu-latest
       permissions:
         packages: write
         contents: read
       steps:
         - uses: actions/checkout@v6
         - uses: actions/setup-node@v7
           with:
             node-version: 20
             registry-url: https://npm.YOUR-HOSTNAME.com/
         - run: npm ci
         - run: npm publish
           env:
             NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}
   ```

8. Teile npm mit, in welchem Bereich und welcher Registrierung Pakete mit einer der folgenden Methoden veröffentlicht werden sollen:
   * Füge eine npm-Konfigurationsdatei für das Repository hinzu, indem du eine `.npmrc`-Datei im Stammverzeichnis mit folgendem Inhalt erstellst:

     ```shell
     @YOUR-USERNAME:registry=https://npm.pkg.github.com
     ```

   * Bearbeite die `package.json`-Datei, und gib den `publishConfig`-Schlüssel an:

     ```shell
     "publishConfig": {
       "@YOUR-USERNAME:registry": "https://npm.pkg.github.com"
     }
     ```

9. Übernehmen Sie den Commit, und übertragen Sie Ihre Änderungen an GitHub.

   ```shell
   $ git add .github/workflows/release-package.yml
   # Also add the file you created or edited in the previous step.
   $ git add .npmrc or package.json
   $ git commit -m "workflow to publish package"
   $ git push
   ```

10. Der von dir erstellte Workflow wird ausgeführt, wenn ein neues Release im Repository erstellt wird. Wenn die Tests bestehen, wird das Paket veröffentlicht in GitHub Packages.

    Um dies zu testen, navigiere zur Registerkarte **Code** in deinem Repository, und erstelle ein neues Release. Weitere Informationen findest du unter [Verwalten von Releases in einem Repository](/de/enterprise-server@3.22/repositories/releasing-projects-on-github/managing-releases-in-a-repository#creating-a-release).

## Anzeigen eines veröffentlichten Pakets

Du kannst alle Pakete anzeigen, die du veröffentlicht hast.

1. Navigieren Sie auf GitHub zur Hauptseite des Repositorys.
2. Wähle auf der rechten Randleiste deines Repositorys die Option **Pakete** aus.

   ![Screenshot der Randleiste einer Repositoryseite. Der Abschnitt „Pakete“ ist orange umrandet.](/assets/images/help/package-registry/packages-from-repo.png)
3. Suche nach dem Namen des Pakets, das du anzeigen möchtest, und wähle es aus.

## Installieren eines veröffentlichten Pakets

Nachdem du das Paket veröffentlicht hast, solltest du es als projektübergreifende Abhängigkeit verwenden. Weitere Informationen finden Sie unter [Arbeiten mit der npm-Registry](/de/enterprise-server@3.22/packages/working-with-a-github-packages-registry/working-with-the-npm-registry#installing-a-package).

## Nächste Schritte

Der Basisworkflow, den du gerade hinzugefügt hast, wird jedes Mal ausgeführt, wenn ein neues Release in deinem Repository erstellt wird. Aber das ist nur der Anfang von dem, was Sie mit GitHub Packages tun können. Du kannst dein Paket mit einem einzelnen Workflow in mehreren Registrierungen veröffentlichen, den Workflow auslösen, um ihn bei verschiedenen Ereignissen wie einer zusammengeführten Pullanforderung auszuführen, Container verwalten usw.

Die Kombination von GitHub Packages und GitHub Actions kann Ihnen dabei helfen, nahezu jeden Aspekt Ihrer Anwendungsentwicklungsprozesse zu automatisieren. Willst du loslegen? Hier sind einige hilfreiche Ressourcen zum Ausführen der nächsten Schritte mit GitHub Packages und GitHub Actions:

* [Informationen zu GitHub-Paketen](/de/enterprise-server@3.22/packages/learn-github-packages) für ein ausführliches Tutorial zu GitHub-Paketen
* [Schreiben von Workflows](/de/enterprise-server@3.22/actions/how-tos/write-workflows) für ein ausführliches Tutorial zu GitHub-Aktionen
* [Arbeiten mit einer GitHub Packages-Registrierung](/de/enterprise-server@3.22/packages/working-with-a-github-packages-registry) für spezifische Anwendungsfälle und Beispiele