Veröffentlichen in GitHub Packages und GitHub Container Registry
In dieser Lerneinheit lernen Sie die Grundlagen für die Verwendung eines Workflows kennen, mit dem Sie GitHub Packages veröffentlichen können. Außerdem werden die erforderlichen Schritte zum Erstellen, Authentifizieren, Markieren und Pushen eines Docker-Images in GitHub Container Registry erläutert.
Verwenden eines Workflows zum Veröffentlichen in GitHub Packages
Mit GitHub Packages können Sie Pakete sicher veröffentlichen und verarbeiten, Ihre Pakete zusammen mit Ihrem Code speichern und Ihre Pakete privat für Ihr Team oder öffentlich für die Open-Source-Community freigeben. Sie können GitHub Actions auch verwenden, um Ihre Pakete zu automatisieren.
Im Folgenden finden Sie ein Beispiel für einen einfachen Workflow, der immer dann ausgeführt wird, wenn ein neues Release im Repository erstellt wird. Wenn die Tests bestanden werden, wird das Paket in GitHub Packages veröffentlicht.
name: Node.js Package
on:
release:
types: [created]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 12
- run: npm ci
- run: npm test
publish-gpr:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 12
registry-url: https://npm.pkg.github.com/
- run: npm ci
- run: npm publish
env:
NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}
Zunächst muss die Workflowdatei im Verzeichnis .github/workflows
vorhanden sein. Ein Workflow, der bei jedem neuen Release ein Paket veröffentlicht, wird üblicherweise release-package.yml
oder ähnlich genannt, damit Projektmitarbeiter den Zweck verstehen, ohne zur Workflowdatei navigieren zu müssen.
Der obige Workflow führt einige Schritte aus, nachdem ein neues Release erstellt wurde:
- Ein Auftrag namens
build
führtnpm ci
aus („ci“ für Continuous Integration), um Abhängigkeiten und die Tests für das Projekt direkt aus der Dateipackage-lock.json
zu installieren. - Sobald der
build
-Auftrag erfolgreich beendet wird, veröffentlicht der Auftrag namenspublish-gpr
das Paket. - Der Workflow veröffentlicht das Paket unter
registry-url: https://npm.pkg.github.com/
, und zwar mithilfe eines Zugriffstokens für die Authentifizierung.
Verwenden von GitHub Container Registry zum Hosten und Verwalten von Docker-Containerimages
GitHub Packages unterstützt Container, Kubernetes und andere cloudnative Technologien, um den gesamten Anwendungslebenszyklus einschließlich der Produktionsvorgänge zu verwalten: Entwicklung, Release und Bereitstellung. GitHub Packages bietet auch eine Containerregistrierung, die die besonderen Anforderungen von Containerimages unterstützt. Mit GitHub Container Registry können Sie Docker-Containerimages in Ihrer GitHub-Organisation oder ihrem persönlichen Benutzerkonto nahtlos hosten und verwalten. Mit GitHub Container Registry können Sie mithilfe differenzierter Berechtigungen konfigurieren, wer Pakete verwalten und darauf zugreifen kann.
Mit der Containerregistrierung haben Sie folgende Möglichkeiten:
- Speichern von Containerimages in Ihrer Organisation und Ihrem Benutzerkonto anstelle eines Repositorys.
- Festlegen differenzierter Berechtigungen für die Containerimages
- Anonymer Zugriff auf öffentliche Containerimages
Nachdem Sie das Image erstellt, authentifiziert und beim Dienst „GitHub Container Registry“ unter ghcr.io
angemeldet haben, können Sie die neueste Version des Images mithilfe der folgenden Befehle taggen und in die Containerregistrierung pushen:
echo $GITHUB_TOKEN | docker login ghcr.io -u USERNAME --password-stdin
docker tag IMAGE_ID ghcr.io/OWNER/IMAGE_NAME:latest
docker push ghcr.io/OWNER/IMAGE_NAME:latest
Hinweis
Für die Authentifizierung mithilfe eines GitHub Actions-Workflows können Sie ein GITHUB_TOKEN verwenden:
- Für Paketregistrierungen unter
PACKAGE-REGISTRY.pkg.github.com
- Für die Containerregistrierung unter
ghcr.io/OWNER/IMAGE-NAME