Blog

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

Mark van Holsteijn

Aktualisiert Oktober 16, 2025
2 Minuten

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.

Contact

Let’s discuss how we can support your journey.