From 6af9ff9ab2b24dd4248d7ba1b082441630479dc8 Mon Sep 17 00:00:00 2001 From: Damien Arnodo Date: Mon, 8 Dec 2025 08:00:17 +0000 Subject: [PATCH] refactor: remove matrix strategy, use simple loop instead --- .gitea/workflows/build-images.yml | 81 ++++++++++--------------------- 1 file changed, 26 insertions(+), 55 deletions(-) diff --git a/.gitea/workflows/build-images.yml b/.gitea/workflows/build-images.yml index 8e99e65..a653e9a 100644 --- a/.gitea/workflows/build-images.yml +++ b/.gitea/workflows/build-images.yml @@ -11,13 +11,10 @@ env: REGISTRY: gitea.arnodo.fr jobs: - detect-changes: + build: runs-on: docker container: - image: alpine:3.20 - outputs: - image_list: ${{ steps.changes.outputs.image_list }} - has_changes: ${{ steps.changes.outputs.has_changes }} + image: docker:cli steps: - name: Install dependencies run: apk add --no-cache git @@ -28,77 +25,51 @@ jobs: git checkout ${{ gitea.sha }} - name: Detect images to build - id: changes + id: detect run: | echo "Event: ${{ gitea.event_name }}" - # Debug: show images directory - echo "Content of images/:" - ls -la images/ || echo "images/ not found" - if [ "${{ gitea.event_name }}" = "workflow_dispatch" ]; then echo "Manual trigger - building all images" - # Simple loop to find images with Dockerfile IMAGES="" for dir in images/*/; do if [ -f "${dir}Dockerfile" ]; then name=$(basename "$dir") echo "Found image: $name" - IMAGES="${IMAGES}${name}," + IMAGES="${IMAGES}${name} " fi done - IMAGES=${IMAGES%,} # Remove trailing comma else echo "Push event - detecting changes" - IMAGES=$(git diff --name-only HEAD~1 HEAD -- images/ 2>/dev/null | cut -d'/' -f2 | sort -u | grep -v '^$' | tr '\n' ',' | sed 's/,$//') + IMAGES=$(git diff --name-only HEAD~1 HEAD -- images/ 2>/dev/null | cut -d'/' -f2 | sort -u | grep -v '^$' | tr '\n' ' ') fi - echo "Detected images: >$IMAGES<" - - if [ -z "$IMAGES" ]; then - echo "has_changes=false" >> $GITHUB_OUTPUT - echo "image_list=[]" >> $GITHUB_OUTPUT - else - # Format JSON avec awk pour être sûr - JSON=$(printf '%s\n' "$IMAGES" | tr ',' '\n' | awk '{printf "\"%s\",", $0}' | sed 's/,$//' | sed 's/^/[/' | sed 's/$/]/') - echo "JSON: $JSON" - echo "has_changes=true" >> $GITHUB_OUTPUT - echo "image_list=$JSON" >> $GITHUB_OUTPUT - fi - - build: - needs: detect-changes - if: needs.detect-changes.outputs.has_changes == 'true' - runs-on: docker - container: - image: docker:cli - strategy: - matrix: - image: ${{ fromJson(needs.detect-changes.outputs.image_list) }} - fail-fast: false - steps: - - name: Debug matrix - run: | - echo "Matrix image value: '${{ matrix.image }}'" - echo "All matrix: ${{ toJson(matrix) }}" - - - name: Install git and checkout - run: | - apk add --no-cache git - git clone --depth 1 https://gitea.arnodo.fr/${{ gitea.repository }}.git . + echo "Images to build: $IMAGES" + echo "images=$IMAGES" >> $GITHUB_OUTPUT - name: Login to Registry run: | echo "${{ secrets.REGISTRY_TOKEN }}" | docker login ${{ env.REGISTRY }} -u ${{ gitea.actor }} --password-stdin - - name: Build and Push + - name: Build and Push all images run: | - IMAGE_NAME="${{ env.REGISTRY }}/damien/${{ matrix.image }}" - IMAGE_PATH="images/${{ matrix.image }}" + IMAGES="${{ steps.detect.outputs.images }}" - echo "Building ${IMAGE_NAME}:latest from ${IMAGE_PATH}" + if [ -z "$IMAGES" ]; then + echo "No images to build" + exit 0 + fi - docker build -t "${IMAGE_NAME}:latest" "${IMAGE_PATH}" - docker push "${IMAGE_NAME}:latest" - - echo "✅ Pushed ${IMAGE_NAME}:latest" + for IMAGE in $IMAGES; do + IMAGE_NAME="${{ env.REGISTRY }}/damien/${IMAGE}" + IMAGE_PATH="images/${IMAGE}" + + echo "========================================" + echo "Building ${IMAGE_NAME}:latest" + echo "========================================" + + docker build -t "${IMAGE_NAME}:latest" "${IMAGE_PATH}" + docker push "${IMAGE_NAME}:latest" + + echo "✅ Pushed ${IMAGE_NAME}:latest" + done