diff --git a/.github/workflows/docker-build-publish.yml b/.github/workflows/docker-build-publish.yml index c3418b8d8..4b9f61df3 100644 --- a/.github/workflows/docker-build-publish.yml +++ b/.github/workflows/docker-build-publish.yml @@ -105,13 +105,16 @@ jobs: id: filter with: filters: | - backend_or_docker: + backend: - 'booklore-api/**' + image_build: + - 'booklore-api/**' + - 'booklore-ui/**' - 'Dockerfile' - 'start.sh' - name: Set Up JDK 21 - if: steps.filter.outputs.backend_or_docker == 'true' + if: steps.filter.outputs.backend == 'true' uses: actions/setup-java@v5 with: java-version: '21' @@ -119,7 +122,7 @@ jobs: cache: 'gradle' - name: Execute Backend Tests - if: steps.filter.outputs.backend_or_docker == 'true' + if: steps.filter.outputs.backend == 'true' id: backend_tests working-directory: ./booklore-api run: | @@ -154,7 +157,7 @@ jobs: exit 1 - name: Skip Backend Tests - if: steps.filter.outputs.backend_or_docker == 'false' + if: steps.filter.outputs.backend == 'false' run: | echo "✅ No backend changes detected. Skipping backend tests." @@ -183,18 +186,22 @@ jobs: id: filter with: filters: | - backend_or_docker: + backend: - 'booklore-api/**' + image_build: + - 'booklore-api/**' + - 'booklore-ui/**' - 'Dockerfile' - 'start.sh' - name: Skip Build and Push - if: steps.filter.outputs.backend_or_docker == 'false' + if: steps.filter.outputs.image_build == 'false' run: | - echo "✅ No backend/Docker changes detected. Skipping image build and publish." + echo "✅ No backend/frontend/Docker changes detected. Skipping image build and publish." + exit 0 - name: Set Up JDK 21 - if: steps.filter.outputs.backend_or_docker == 'true' + if: steps.filter.outputs.backend == 'true' uses: actions/setup-java@v5 with: java-version: '21' @@ -202,21 +209,19 @@ jobs: cache: 'gradle' - name: Execute Backend Tests - if: steps.filter.outputs.backend_or_docker == 'true' + if: steps.filter.outputs.backend == 'true' working-directory: ./booklore-api run: | echo "Running backend tests before building image..." ./gradlew test --no-daemon --parallel --build-cache - name: Authenticate to Docker Registries - if: steps.filter.outputs.backend_or_docker == 'true' uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Authenticate to GitHub Container Registry - if: steps.filter.outputs.backend_or_docker == 'true' uses: docker/login-action@v3 with: registry: ghcr.io @@ -224,15 +229,12 @@ jobs: password: ${{ github.token }} - name: Set Up QEMU for Multi-Architecture Builds - if: steps.filter.outputs.backend_or_docker == 'true' uses: docker/setup-qemu-action@v3 - name: Set Up Docker Buildx - if: steps.filter.outputs.backend_or_docker == 'true' uses: docker/setup-buildx-action@v3 - name: Retrieve Latest Master Version Tag - if: steps.filter.outputs.backend_or_docker == 'true' id: get_version run: | latest_tag=$(git tag --list "v*" --sort=-v:refname | head -n 1) @@ -241,7 +243,7 @@ jobs: echo "Latest master tag: $latest_tag" - name: Determine Version Bump (Master Only) - if: steps.filter.outputs.backend_or_docker == 'true' && github.ref == 'refs/heads/master' + if: github.ref == 'refs/heads/master' id: determine_bump env: GH_TOKEN: ${{ github.token }} @@ -297,7 +299,6 @@ jobs: echo "new_tag=$next_version" >> $GITHUB_ENV - name: Generate Image Tag - if: steps.filter.outputs.backend_or_docker == 'true' id: set_image_tag run: | branch="${GITHUB_REF#refs/heads/}" @@ -314,7 +315,6 @@ jobs: echo "Image tag: $image_tag" - name: Build and Push Docker Images - if: steps.filter.outputs.backend_or_docker == 'true' uses: docker/build-push-action@v6 with: context: . @@ -334,7 +334,7 @@ jobs: type=registry,ref=ghcr.io/booklore-app/booklore:buildcache,mode=max - name: Push Latest Tag (Master Only) - if: steps.filter.outputs.backend_or_docker == 'true' && github.ref == 'refs/heads/master' + if: github.ref == 'refs/heads/master' uses: docker/build-push-action@v6 with: context: . @@ -351,7 +351,7 @@ jobs: cache-from: type=gha - name: Update GitHub Release Draft (Master Only) - if: steps.filter.outputs.backend_or_docker == 'true' && github.ref == 'refs/heads/master' + if: github.ref == 'refs/heads/master' uses: release-drafter/release-drafter@v6 with: tag: ${{ env.new_tag }} @@ -360,7 +360,7 @@ jobs: GITHUB_TOKEN: ${{ github.token }} - name: Publish GitHub Draft Release (Master Only) - if: steps.filter.outputs.backend_or_docker == 'true' && github.ref == 'refs/heads/master' + if: github.ref == 'refs/heads/master' env: GITHUB_TOKEN: ${{ github.token }} run: |