diff --git a/.gitea/workflows/docker-builder.yml b/.gitea/workflows/docker-builder.yml new file mode 100644 index 0000000..910b4b5 --- /dev/null +++ b/.gitea/workflows/docker-builder.yml @@ -0,0 +1,78 @@ +name: Docker Build Dynamic + +on: + push: + branches: + - 0.2.13 + workflow_dispatch: + +env: + REGISTRY_HOST: git.pi-farm.de + # Nutzt das aktuelle Repo + 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 \ No newline at end of file