diff --git a/.gitea/workflows/build-images.yml b/.gitea/workflows/build-images.yml index a653e9a..c76d7c6 100644 --- a/.gitea/workflows/build-images.yml +++ b/.gitea/workflows/build-images.yml @@ -6,6 +6,11 @@ on: paths: - 'images/**' workflow_dispatch: + inputs: + image: + description: 'Image to build (e.g., terraform-ci). Leave empty to build all.' + required: false + default: '' env: REGISTRY: gitea.arnodo.fr @@ -30,16 +35,24 @@ jobs: echo "Event: ${{ gitea.event_name }}" if [ "${{ gitea.event_name }}" = "workflow_dispatch" ]; then - echo "Manual trigger - building all images" - IMAGES="" - for dir in images/*/; do - if [ -f "${dir}Dockerfile" ]; then - name=$(basename "$dir") - echo "Found image: $name" - IMAGES="${IMAGES}${name} " - fi - done + if [ -n "${{ inputs.image }}" ]; then + # Manual trigger with specific image + echo "Manual trigger - building specific image: ${{ inputs.image }}" + IMAGES="${{ inputs.image }}" + else + # Manual trigger without input = build all + echo "Manual trigger - building all images" + IMAGES="" + for dir in images/*/; do + if [ -f "${dir}Dockerfile" ]; then + name=$(basename "$dir") + echo "Found image: $name" + IMAGES="${IMAGES}${name} " + fi + done + fi else + # Push event = detect changes only 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' ' ') fi @@ -64,6 +77,17 @@ jobs: IMAGE_NAME="${{ env.REGISTRY }}/damien/${IMAGE}" IMAGE_PATH="images/${IMAGE}" + # Validate image path exists + if [ ! -d "$IMAGE_PATH" ]; then + echo "❌ Error: Directory $IMAGE_PATH does not exist" + exit 1 + fi + + if [ ! -f "$IMAGE_PATH/Dockerfile" ]; then + echo "❌ Error: Dockerfile not found in $IMAGE_PATH" + exit 1 + fi + echo "========================================" echo "Building ${IMAGE_NAME}:latest" echo "========================================"