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