GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Docker

So richten Sie automatische Builds für Docker-Images auf GitHub ein

GitHub verfügt über eine Funktion namens GitHub Actions, die automatische Builds, Tests und andere Skripts ausführt, wenn Sie Änderungen an einem Repository vornehmen. Ein praktischer Anwendungsfall dafür ist das automatische Erstellen und Pushen von Docker-Containern in eine Container-Registrierung.

Neue Containerregistrierung von GitHub

Die neue Containerregistrierung von GitHub, genannt GitHub Container Registry, unterscheidet sich ein wenig von den meisten Registrierungen wie Docker Hub. Es fungiert als Erweiterung von GitHub Packages, einem Paketspeichersystem, das Pakete mit ihren Quellcode-Repositorys verknüpft. Pakete können erstellt und aus dem Repository gepusht werden, oft automatisch mit Hilfe einer GitHub Actions-Pipeline.

GitHub Container Registry fügt einfach Docker-spezifische Kompatibilität zu GitHub-Paketen hinzu, wodurch es wie eine Containerregistrierung funktioniert, um docker pull auszuführen und andere CLI-Befehle.

Sie müssen nicht in der Containerregistrierung von GitHub veröffentlichen – Sie können immer noch von einer Aktion mit einer gewissen Konfiguration im Docker Hub veröffentlichen. Die vorgefertigten Aktionen funktionieren jedoch sofort mit GHCR, sodass die Einrichtung viel einfacher ist.

So richten Sie automatische Builds für GitHub-Pakete ein

Zu Beginn benötigen Sie ein Repository. Selbst wenn Sie nur Pakete veröffentlichen, benötigen Sie dennoch ein Repo, da das Format für GHCR lautet:

ghcr.io/username/repository/image:version

Richten Sie ein Repo ein und klicken Sie dann auf „Aktionen“, um eine neue Aktion zu erstellen. Klicken Sie unter „Weitere Continuous-Integration-Workflows“ auf „Docker-Container veröffentlichen“.

Dadurch wird ein Starter-Template generiert, das einige Änderungen erfordert, um zu funktionieren. Zuerst der IMAGE_NAME Variable muss in Ihren Bildnamen geändert werden.

Dann finden Sie in Zeile 39, wo es sich bei GHCR anmeldet.

run: echo "${{ secrets.CR_PAT }}" | docker login https://ghcr.io -u ${{ github.actor }} --password-stdin

Derzeit ist das einzige unterstützte Authentifizierungsschema Personal Access Tokens (PATs), was für die Sicherheit nicht besonders geeignet ist, da es einen kontoweiten Zugriff gewährt. GitHub weiß das und arbeitet an einer besseren Lösung für die Zukunft, aber in der Zwischenzeit müssen Sie, wenn Sie GHCR aus einem GitHub Actions-Workflow verwenden möchten, ein PAT in den Secrets für Ihr Repository speichern, da offensichtlich nur Einfügen es hier drin wäre entsetzlich.

Zuerst müssen Sie zu Einstellungen> Entwicklereinstellungen> Persönliche Zugriffstoken gehen und ein neues Token erstellen. Dieses Token benötigt write:packages und delete:packages die Einstellungen. Beachten Sie, dass aus irgendeinem Grund beim Auswählen von Write Packages automatisch „Full Control Of Repositories“ ausgewählt wird, was Sie deaktivieren müssen.

Gehen Sie dann zu den Einstellungen des Repositorys und erstellen Sie ein neues Geheimnis namens CR_PAT , passend zur Aktion.

Gehen Sie zurück zur Aktion und klicken Sie auf „Commit starten“, um sie in das Repository zu verschieben.

Sobald es festgeschrieben ist, wird es einen Workflow auslösen, um das Paket auszuführen und zu erstellen. Unter dem Reiter „Aktionen“ können Sie den Status aller laufenden Workflows überwachen. Hier ist es fehlgeschlagen, weil die Standardaktionen erwarten, dass Tests ausgeführt werden, die dieses Image nicht hatte.

Sobald dies erfolgreich war, sollten Sie den Container in der Registrierung unter „Pakete“ auf der Hauptseite des Repositorys oder unter den Paketen in Ihrem Profil sehen.


Docker
  1. So verschieben Sie Docker-Images zwischen Hosts

  2. So suchen, ziehen, listen und löschen Sie Docker-Images unter Linux

  3. So teilen Sie Docker-Images mit anderen

  4. So ändern Sie Docker-Images

  5. So richten Sie Docker im Windows-System für Linux (WSL2) unter Windows 10 ein

So aktualisieren Sie Docker-Images auf die neueste Version

So richten Sie Pihole in einem Docker-Container ein

So richten Sie einen Apache Docker-Container ein

So richten Sie Docker in WSL ein [Schritt für Schritt]

So überprüfen Sie die Speicherplatznutzung für Docker-Images, Container und Volumes

Vollständige Anleitung zum Entfernen von Docker-Images