From d8687593f8258eedc9eff9cb01f66188ca0d527c Mon Sep 17 00:00:00 2001 From: Henry Date: Mon, 22 Dec 2025 14:03:19 +0100 Subject: [PATCH] .gitea/workflows/linux_arm64_docker-release.yaml aktualisiert --- .../workflows/linux_arm64_docker-release.yaml | 75 ++++++++++--------- 1 file changed, 40 insertions(+), 35 deletions(-) diff --git a/.gitea/workflows/linux_arm64_docker-release.yaml b/.gitea/workflows/linux_arm64_docker-release.yaml index 469b6cb..bbbdd87 100644 --- a/.gitea/workflows/linux_arm64_docker-release.yaml +++ b/.gitea/workflows/linux_arm64_docker-release.yaml @@ -4,7 +4,7 @@ run-name: Release-Docker-Linux-ARM64 on: push: branches: [ "main", "master" ] - tags: [ "v*" ] # Reagiert auf v1.0, v2.1.3, etc. + tags: [ "v*" ] # Reagiert auf v1.0.0, v2.1.3-beta.1, etc. jobs: build-docker-linux-arm64-release: @@ -16,21 +16,28 @@ jobs: - name: Clone the repository uses: actions/checkout@v4 with: - fetch-depth: 0 # Wichtig für Versionierung + fetch-depth: 0 - # Version bestimmen - - name: Get Version - id: get_version - run: | - # Wenn ein Tag vorhanden ist (z.B. v1.0.2), nimm diesen. - # Sonst generiere eine Version aus dem Datum + Kurz-Hash. - if [[ $GITHUB_REF == refs/tags/* ]]; then - VERSION=${GITHUB_REF#refs/tags/} - else - VERSION="latest-$(date +%Y%m%d)-$(git rev-parse --short HEAD)" - fi - echo "VERSION=$VERSION" >> $GITHUB_ENV - echo "REPO_LC=${GITHUB_REPOSITORY,,}" >> $GITHUB_ENV + # 1. Namen in Kleinschreibung konvertieren (für Docker Registry nötig) + - name: Prepare Repo Name + run: echo "REPO_LC=${GITHUB_REPOSITORY,,}" >> $GITHUB_ENV + + # 2. Extraktion der Docker Metadaten (SemVer Magie) + - name: Docker metadata + id: meta + uses: docker/metadata-action@v5 + with: + images: gitea.penry.de/${{ env.REPO_LC }} + # Hier definieren wir, wie Tags generiert werden: + tags: | + # Wenn ein Tag v1.2.3 gepusht wird: + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + type=semver,pattern={{major}} + # Wenn auf main gepusht wird, erstelle 'latest' + type=raw,value=latest,enable=${{ github.ref == format('refs/heads/{0}', github.event.repository.default_branch) }} + # Optional: Für jeden Commit auf main einen 'edge' Tag + type=edge,branch=main - name: Login to own image registry uses: docker/login-action@v3 @@ -44,31 +51,29 @@ jobs: with: dotnet-version: '10.0.x' - - name: Build Linux ARM64 Docker Image - run: | - # Wir bauen das Image mit ZWEI Tags: - # 1. Der spezifischen Version (z.B. v1.0.2) - # 2. Dem 'latest' Tag (damit das aktuellste Image immer 'latest' ist) - docker build \ - -t gitea.penry.de/${{ env.REPO_LC }}:${{ env.VERSION }} \ - -t gitea.penry.de/${{ env.REPO_LC }}:latest \ - --label "org.opencontainers.image.source=https://gitea.penry.de/${{ github.repository }}" \ - . + # 3. Build mit den automatisch generierten Tags + - name: Build and Push Linux ARM64 Docker Image + uses: docker/build-push-action@v5 + with: + context: . + platforms: linux/arm64 + push: true + # Hier werden alle von 'meta' generierten Tags übergeben + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} - - name: Push Images + # 4. Release Artefakt (nur bei echten Version-Tags) + - name: Export Image Tar + if: startsWith(github.ref, 'refs/tags/v') run: | - docker push gitea.penry.de/${{ env.REPO_LC }}:${{ env.VERSION }} - docker push gitea.penry.de/${{ env.REPO_LC }}:latest - - - name: Make Tar from image - run: | - # Wir nutzen die Version auch im Dateinamen vom Tar - docker save -o couchlog-linux-arm64-${{ env.VERSION }}.tar gitea.penry.de/${{ env.REPO_LC }}:${{ env.VERSION }} + # Wir nehmen den präzisesten Tag aus den Metadaten für den Dateinamen + VERSION=${{ steps.meta.outputs.version }} + docker pull gitea.penry.de/${{ env.REPO_LC }}:$VERSION + docker save -o couchlog-linux-arm64-$VERSION.tar gitea.penry.de/${{ env.REPO_LC }}:$VERSION - name: Release - # Das Release wird nur erstellt, wenn es wirklich ein Tag-Push ist if: startsWith(github.ref, 'refs/tags/v') uses: akkuman/gitea-release-action@v1 with: files: |- - couchlog-linux-arm64-${{ env.VERSION }}.tar \ No newline at end of file + couchlog-linux-arm64-${{ steps.meta.outputs.version }}.tar \ No newline at end of file