name: Docker Build Dynamic on: push: branches: - 3.23 workflow_dispatch: env: REGISTRY_HOST: git.pi-farm.de # Nutzt das aktuelle Repo (z.B. pi-farm/docker-baseimage-alpine) 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: | # Branch Name als Version VERSION=$(git rev-parse --abbrev-ref HEAD) # Zusammenbau der vollen Pfade # Ziel: git.pi-farm.de/owner/repo FULL_IMAGE_NAME="${{ env.REGISTRY_HOST }}/${{ env.IMAGE_BASE }}" # Ziel: git.pi-farm.de/owner/repo-cache CACHE_IMAGE_NAME="${{ env.REGISTRY_HOST }}/${{ env.IMAGE_BASE }}-cache" 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