name: Publish Servlet images for smoke tests on: push: paths: - "smoke-tests/images/servlet/**" - ".github/workflows/publish-smoke-test-servlet-images.yml" branches: - main workflow_dispatch: jobs: prepare: runs-on: ubuntu-latest outputs: tag: ${{ steps.set-tag.outputs.TAG }} steps: - id: set-tag name: Set tag run: echo "TAG=$(date '+%Y%m%d').$GITHUB_RUN_ID" >> $GITHUB_OUTPUT publish: needs: prepare runs-on: ${{ matrix.os }} defaults: run: shell: bash # this is needed for TAG construction below on Windows 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@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - name: Free disk space if: matrix.os != 'windows-latest' run: .github/scripts/gha-free-disk-space.sh - name: Set up JDK for running Gradle uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1 with: distribution: temurin java-version-file: .java-version - name: Login to GitHub package registry uses: docker/login-action@0d4c9c5ea7693da7b068278f7b52bda2a190a446 # v3.2.0 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Set up Gradle cache uses: gradle/actions/setup-gradle@d9336dac04dea2507a617466bc058a3def92b18b # v3.4.0 with: # only push cache for one matrix option per OS since github action cache space is limited cache-read-only: ${{ matrix.smoke-test-suite != 'tomcat' }} - name: Build Linux docker images if: matrix.os != 'windows-latest' run: ./gradlew :smoke-tests:images:servlet:buildLinuxTestImages pushMatrix -PextraTag=${{ needs.prepare.outputs.tag }} -PsmokeTestServer=${{ matrix.smoke-test-server }} - name: Build Windows docker images if: matrix.os == 'windows-latest' run: ./gradlew :smoke-tests:images:servlet:buildWindowsTestImages pushMatrix -PextraTag=${{ needs.prepare.outputs.tag }} -PsmokeTestServer=${{ matrix.smoke-test-server }} workflow-notification: needs: - publish if: always() uses: ./.github/workflows/reusable-workflow-notification.yml with: success: ${{ needs.publish.result == 'success' }}