name: PR build Servlet images for smoke tests

on:
  pull_request:
    paths:
      - "smoke-tests/images/servlet/**"
      - ".github/workflows/pr-smoke-test-servlet-images.yml"

jobs:
  build:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os:
          - windows-latest
          - ubuntu-latest
        smoke-test-server:
          - jetty
          - liberty
          - payara
          - tomcat
          - tomee
          - websphere
          - wildfly
        exclude:
          - os: windows-latest
            smoke-test-server: websphere
      fail-fast: false
    steps:
      - name: Support long paths
        run: git config --system core.longpaths true
        if: matrix.os == 'windows-latest'

      - uses: actions/checkout@v4

      - name: Free disk space
        run: .github/scripts/gha-free-disk-space.sh

      - name: Set up JDK for running Gradle
        uses: actions/setup-java@v4
        with:
          distribution: temurin
          java-version: 21

      - name: Set up Gradle cache
        uses: gradle/actions/setup-gradle@db19848a5fa7950289d3668fb053140cf3028d43 # v3.3.2
        with:
          cache-read-only: true

      - name: Build Linux docker images
        if: matrix.os != 'windows-latest'
        run: ./gradlew :smoke-tests:images:servlet:buildLinuxTestImages -PsmokeTestServer=${{ matrix.smoke-test-server }}

      - name: Build Windows docker images
        if: matrix.os == 'windows-latest'
        run: ./gradlew :smoke-tests:images:servlet:buildWindowsTestImages -PsmokeTestServer=${{ matrix.smoke-test-server }}
