name: Docker Build Multi-Branch on: push: branches: - '**' workflow_dispatch: env: REGISTRY_HOST: git.pi-farm.de IMAGE_BASE: ${{ gitea.repository }} jobs: build: name: Build amd64 & arm64 runs-on: buildx-multiarch steps: - name: Checkout repository uses: actions/checkout@v4 - name: Set dynamic variables run: | # Nutzt die Gitea-Variable für den Branch-Namen (z.B. 3.23 oder main) VERSION="${{ gitea.ref_name }}" # Pfade zusammenbauen FULL_IMAGE_NAME="${{ env.REGISTRY_HOST }}/${{ env.IMAGE_BASE }}" CACHE_IMAGE_NAME="${{ env.REGISTRY_HOST }}/${{ env.IMAGE_BASE }}-cache" # Variablen für nachfolgende Schritte speichern echo "VERSION=$VERSION" >> $GITEA_ENV echo "IMAGE_NAME=$FULL_IMAGE_NAME" >> $GITEA_ENV echo "CACHE_IMAGE_NAME=$CACHE_IMAGE_NAME" >> $GITEA_ENV echo "BUILD_DATE=$(date -u +%Y-%m-%dT%H:%M:%SZ)" >> $GITEA_ENV - name: Login to registry run: | echo "${{ secrets.REGISTRY_PASSWORD }}" | docker login \ ${{ env.REGISTRY_HOST }} \ -u ${{ secrets.REGISTRY_USER }} \ --password-stdin - name: Setup buildx run: | docker buildx rm multiarch || true docker buildx create --name multiarch --driver docker-container --use docker buildx inspect --bootstrap - name: Build & push amd64 (Cache) run: | docker buildx build \ --platform linux/amd64 \ -f Dockerfile \ --build-arg BUILD_DATE=${BUILD_DATE} \ --build-arg VERSION=${VERSION} \ -t ${CACHE_IMAGE_NAME}:${VERSION}-amd64 \ --push . - name: Build & push arm64 (Cache) run: | docker buildx build \ --platform linux/arm64 \ -f Dockerfile.aarch64 \ --build-arg BUILD_DATE=${BUILD_DATE} \ --build-arg VERSION=${VERSION} \ -t ${CACHE_IMAGE_NAME}:${VERSION}-arm64 \ --push . - name: Create and push manifest to Prod run: | docker buildx imagetools create \ -t ${IMAGE_NAME}:${VERSION} \ ${CACHE_IMAGE_NAME}:${VERSION}-amd64 \ ${CACHE_IMAGE_NAME}:${VERSION}-arm64