@@ -64,10 +64,36 @@ jobs:
6464 echo "native=false" >> "$GITHUB_OUTPUT"
6565 fi
6666
67+ # Build the Servlet smoke-test images only when the PR touches the
68+ # servlet image sources or its workflow definition.
69+ resolve-servlet-images :
70+ runs-on : ubuntu-latest
71+ outputs :
72+ build-servlet-images : ${{ steps.filter.outputs.servlet }}
73+ steps :
74+ - name : Detect servlet-image-relevant changes
75+ id : filter
76+ env :
77+ GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
78+ PR_NUMBER : ${{ github.event.pull_request.number }}
79+ run : |
80+ files=$(
81+ gh api --paginate "/repos/${GITHUB_REPOSITORY}/pulls/${PR_NUMBER}/files" \
82+ --jq '.[].filename'
83+ )
84+ include='^smoke-tests/images/servlet/'
85+ include+='|^\.github/workflows/reusable-build-servlet-images\.yml$'
86+ if grep -Eq "$include" <<<"$files"; then
87+ echo "servlet=true" >> "$GITHUB_OUTPUT"
88+ else
89+ echo "servlet=false" >> "$GITHUB_OUTPUT"
90+ fi
91+
6792 build :
68- needs : [resolve-native]
93+ needs : [resolve-native, resolve-servlet-images ]
6994 uses : ./.github/workflows/reusable-pr-build.yml
7095 with :
7196 skip-native-tests : ${{ !(needs.resolve-native.outputs.run-native-tests == 'true' || contains(github.event.pull_request.labels.*.name, 'test native')) }}
7297 skip-openj9-tests : ${{ !contains(github.event.pull_request.labels.*.name, 'test openj9') }}
7398 skip-windows-smoke-tests : ${{ !contains(github.event.pull_request.labels.*.name, 'test windows') }}
99+ skip-servlet-images : ${{ needs.resolve-servlet-images.outputs.build-servlet-images != 'true' }}
0 commit comments