Veröffentlichen in GitHub Packages und GitHub Container Registry
Hier lernen Sie die Grundlagen der Verwendung eines Workflows zum Veröffentlichen in GitHub-Paketen sowie die erforderlichen Schritte zum Erstellen, Authentifizieren, Tagieren und Pushen eines Docker-Images an die GitHub-Containerregistrierung kennen.
Verwenden eines Workflows zum Veröffentlichen in GitHub-Paketen
Mit GitHub-Paketen können Sie Pakete sicher veröffentlichen und nutzen, Ihre Pakete zusammen mit Ihrem Code speichern und Ihre Pakete privat mit Ihrem Team oder öffentlich mit der Open-Source-Community teilen. Sie können auch GitHub-Aktionen verwenden, um Ihre Pakete zu automatisieren.
Nachfolgend finden Sie ein Beispiel für einen einfachen Workflow, der ausgeführt wird, wenn eine neue Version in einem Repository erstellt wird. Wenn die Tests bestehen, wird das Paket auf GitHub-Pakete 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}}
Zuerst muss die Workflowdatei im .github/workflows Verzeichnis vorhanden sein. Es ist gängige Praxis, einen Workflow so zu benennen, dass er ein neues Paket veröffentlicht, sobald eine neue Version erstellt wird, wie release-package.yml. Dies erleichtert es den Projektmitarbeitern, den Zweck des Workflows zu verstehen, ohne zur Workflowdatei navigieren zu müssen.
Der vorherige Workflow führt einige Dinge aus, nachdem eine neue Version erstellt wurde:
- Ein Auftrag namens
buildführtnpm ciaus („ci“ für Continuous Integration), um Abhängigkeiten und die Tests für das Projekt direkt aus der Dateipackage-lock.jsonzu installieren. - Sobald der
buildAuftrag erfolgreich ist, veröffentlicht der Auftrag mit dem Namenpublish-gprdas Paket. - Der Workflow veröffentlicht das Paket an die
registry-url: https://npm.pkg.github.com/unter Verwendung eines Zugriffstokens zur Authentifizierung.
Verwenden Sie die GitHub Container-Registry zum Hosten und Verwalten von Docker-Container-Images
GitHub-Pakete unterstützen die Verwendung von Containern, Kubernetes und anderen cloudeigenen Technologien, um ihren gesamten Anwendungslebenszyklus zu verwalten, einschließlich Produktionsvorgängen, Entwicklung, Release und Bereitstellung. GitHub Packages bietet auch eine Containerregistrierung, die die einzigartigen Anforderungen von Containerimages unterstützt. Sie können gitHub Container Registry verwenden, um Docker-Containerimages in Ihrer GitHub-Organisation oder Ihrem persönlichen Benutzerkonto nahtlos zu hosten und zu verwalten. Mithilfe der GitHub Container Registry können Sie konfigurieren, wer Pakete mit feinkörnigen Berechtigungen verwalten und darauf zugreifen kann.
Mit der Containerregistrierung können Sie:
- Speichern Sie Containerimages innerhalb Ihrer Organisation und Ihres Benutzerkontos anstelle eines Repositorys.
- Legen Sie feingranulare Berechtigungen für die Container-Images fest.
- 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
Um sich mit einem GitHub Actions-Workflow zu authentifizieren, können Sie eine GITHUB_TOKEN verwenden:
- Für Paketregistrierungen unter
PACKAGE-REGISTRY.pkg.github.com. - Für die Containerregistrierung unter
ghcr.io/OWNER/IMAGE-NAME.