From f2287831933779a815ad38e1f176df87a3d2ebe3 Mon Sep 17 00:00:00 2001 From: Bertrand Benjamin Date: Mon, 20 Jul 2026 08:01:49 +0200 Subject: [PATCH] ci: build via docker build/push classiques (sans buildx) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Le runner Gitea ne peut pas booter un builder docker-container : le bootstrap tente de puller moby/buildkit:buildx-stable-1, ce qui échoue. On utilise le BuildKit intégré au démon (DOCKER_BUILDKIT=1 docker build) puis docker push, en conservant metadata-action pour tags et labels. Les tags/labels sont lus ligne à ligne (labels avec espaces préservés). Co-Authored-By: Claude Opus 4.8 --- .gitea/workflows/docker-publish.yml | 52 ++++++++++++++++------------- 1 file changed, 28 insertions(+), 24 deletions(-) diff --git a/.gitea/workflows/docker-publish.yml b/.gitea/workflows/docker-publish.yml index 32f0279..e939df9 100644 --- a/.gitea/workflows/docker-publish.yml +++ b/.gitea/workflows/docker-publish.yml @@ -20,14 +20,6 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - with: - # Réutilise le démon Docker de l'hôte au lieu de booter un conteneur - # builder (driver docker-container) : le runner Gitea n'a pas les - # privilèges pour le démarrer. Suffisant pour un push linux/amd64. - driver: docker - - name: Log in to Docker Registry uses: docker/login-action@v3 with: @@ -52,23 +44,35 @@ jobs: org.opencontainers.image.source=${{ gitea.server_url }}/${{ gitea.repository }} org.opencontainers.image.version=${{ gitea.ref_name }} - - name: Build and push image - id: build - uses: docker/build-push-action@v5 - with: - # Conteneur unique : l'image builde le frontend Vue puis le fait - # servir par le backend FastAPI (cf. backend.Dockerfile). - context: . - file: ./backend.Dockerfile - push: true - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - platforms: linux/amd64 - - - name: Image digest + # BuildKit intégré au démon Docker (docker build), pas de buildx : + # le runner ne peut pas booter un builder docker-container (pull de + # moby/buildkit qui échoue). `docker build`/`docker push` suffisent + # pour une image linux/amd64 sur un seul registre. + # Conteneur unique : l'image builde le frontend Vue puis le fait servir + # par le backend FastAPI (cf. backend.Dockerfile). + - name: Build image + shell: bash + env: + TAGS: ${{ steps.meta.outputs.tags }} + LABELS: ${{ steps.meta.outputs.labels }} run: | - echo "Image pushed with digest: ${{ steps.build.outputs.digest }}" - echo "Tags: ${{ steps.meta.outputs.tags }}" + args=() + while IFS= read -r tag; do + [ -n "$tag" ] && args+=(-t "$tag") + done <<< "$TAGS" + while IFS= read -r label; do + [ -n "$label" ] && args+=(--label "$label") + done <<< "$LABELS" + DOCKER_BUILDKIT=1 docker build -f backend.Dockerfile "${args[@]}" . + + - name: Push image + shell: bash + env: + TAGS: ${{ steps.meta.outputs.tags }} + run: | + while IFS= read -r tag; do + [ -n "$tag" ] && docker push "$tag" + done <<< "$TAGS" summary: name: Build Summary