name: Build Docker Linux ARM64 Release run-name: Release-Docker-Linux-ARM64 on: push: branches: [ "main", "master" ] tags: [ "v*" ] # Reagiert auf v1.0.0, v2.1.3-beta.1, etc. jobs: build-docker-linux-arm64-release: runs-on: [self-hosted, linux, arm64, docker] steps: - name: Install packages run: apk add --no-cache git curl wget unzip bash nodejs npm docker - name: Clone the repository uses: actions/checkout@v4 with: fetch-depth: 0 # 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 with: registry: gitea.penry.de username: ${{ secrets.REGISTRY_USER }} password: ${{ secrets.REGISTRY_PASSWORD }} - name: Setup .NET10 uses: actions/setup-dotnet@v3 with: dotnet-version: '10.0.x' # 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 }} # 4. Release Artefakt (nur bei echten Version-Tags) - name: Export Image Tar if: startsWith(github.ref, 'refs/tags/v') run: | # 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 if: startsWith(github.ref, 'refs/tags/v') uses: akkuman/gitea-release-action@v1 with: files: |- couchlog-linux-arm64-${{ steps.meta.outputs.version }}.tar