Blog
Ein gebrauchsfertiger Github-Aktions-Workflow zum Übertragen von Container-Images in die Registry

In diesem Blog stelle ich Ihnen einen gebrauchsfertigen Github-Aktions-Workflow vor, mit dem Sie Container-Images in die Image-Registry übertragen können. In der modernen Softwareentwicklung sind wir sehr stark auf Container-Images angewiesen. Da Github jetzt auch eine eigene Container-Image-Registry - ghcr.io - hat, wird es einfach, innerhalb eines einzigen Workflows Images zu erstellen und direkt an eine Registry zu übertragen.
Github Aktion Arbeitsablauf
Unten sehen Sie den gebrauchsfertigen Github-Aktionsablauf, um Ihr Container-Image in die Github-Container-Registry ghcr.io zu pushen:
name: Build and publish the container image
"on":
push:
tags:
- '*'
branches:
- 'main'
jobs:
build-and-push-image:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
-
name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: 0
-
name: Get tag
id: repository
run: echo "tag=$(git describe --tags HEAD)" > $GITHUB_ENV
-
name: Set up QEMU
uses: docker/setup-qemu-action@v2
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
-
name: Log in to the Container registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
-
name: Build and push
uses: docker/build-push-action@v3
with:
context: .
platforms: linux/amd64,linux/arm64
push: true
tags: ghcr.io/${{ github.repository }}:${{ env.tag }}
Wie Sie sehen können, funktioniert er mit jedem Repository. Wenn Sie ein Git-Repository für ein Container-Image haben, fügen Sie einfach diesen Workflow hinzu.
- in die dem Repository entsprechende Container-Registrierung
- Es verwendet
git describe --tags HEAD, um einen Semver-Tag für das Bild zu erzeugen. - es erstellt ein Multi-Architektur-Image für amd64 und arm64
- es wird bei jedem Push auf den Hauptzweig oder bei jedem Tag eines Commits ausgeführt
Ziemlich toll, nicht wahr?
den Workflow installieren
Um den Workflow zu installieren, geben Sie die folgenden Befehle ein:
# add the workflow
$ mkdir -p .github/workflows/
$ curl -sS -L -o .github/workflows/push-to-registry.yaml
https://raw.githubusercontent.com/binxio/push-to-registry-gh-action-workflow/main/.github/workflows/push-to-registry.yaml
$ git add .
$ git commit -m 'added push to ghcr.io workflow'
Um eine schöne semantische Version Ihres Bildes zu veröffentlichen, geben Sie ein:
$ read NEW_SEMVER
$ git tag $NEW_SEMVER
$ git push --tags
$ git push
Sehen Sie sich den resultierenden Github-Aktions-Workflow an!
Fazit
Mit der Verfügbarkeit der Github-Container-Image-Registry macht dieser einfache, sofort einsetzbare Arbeitsablauf Github zu einer zentralen Anlaufstelle für das Erstellen und Verteilen Ihrer Container-Images!
Foto von Jakob Owens auf Unsplash
Verfasst von

Mark van Holsteijn
Mark van Holsteijn is a senior software systems architect at Xebia Cloud-native solutions. He is passionate about removing waste in the software delivery process and keeping things clear and simple.
Unsere Ideen
Weitere Blogs
Contact



