Skip to content

Commit 6269afb

Browse files
authored
Wire PR build Servlet images into required-status-check (#18698)
1 parent 94e0846 commit 6269afb

4 files changed

Lines changed: 47 additions & 12 deletions

File tree

.github/workflows/build-pull-request.yml

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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' }}

.github/workflows/pr-smoke-test-servlet-images.yml renamed to .github/workflows/reusable-build-servlet-images.yml

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
1-
name: PR build Servlet images for smoke tests
1+
name: Reusable - Build Servlet images for smoke tests
22

33
on:
4-
pull_request:
5-
paths:
6-
- "smoke-tests/images/servlet/**"
7-
- ".github/workflows/pr-smoke-test-servlet-images.yml"
4+
workflow_call:
85

96
permissions:
107
contents: read

.github/workflows/reusable-native-tests.yml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,6 @@ name: Reusable - Native tests
33
on:
44
workflow_call:
55
inputs:
6-
skip-native-tests:
7-
type: boolean
8-
required: false
96
test-latest-deps:
107
type: boolean
118
required: false
@@ -15,7 +12,6 @@ permissions:
1512

1613
jobs:
1714
graalvm-native-tests:
18-
if: "!inputs.skip-native-tests"
1915
runs-on: ubuntu-latest
2016
strategy:
2117
matrix:

.github/workflows/reusable-pr-build.yml

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ on:
1414
skip-windows-smoke-tests:
1515
type: boolean
1616
default: false
17+
skip-servlet-images:
18+
type: boolean
19+
default: false
1720

1821
permissions:
1922
contents: read
@@ -32,9 +35,8 @@ jobs:
3235
cache-read-only: true
3336

3437
test-native:
38+
if: "!inputs.skip-native-tests"
3539
uses: ./.github/workflows/reusable-native-tests.yml
36-
with:
37-
skip-native-tests: ${{ inputs.skip-native-tests }}
3840

3941
muzzle:
4042
uses: ./.github/workflows/reusable-muzzle.yml
@@ -47,19 +49,33 @@ jobs:
4749
if: "!startsWith(github.ref_name, 'release/') && !startsWith(github.base_ref, 'release/')"
4850
uses: ./.github/workflows/reusable-lint-check.yml
4951

52+
build-servlet-images:
53+
if: "!inputs.skip-servlet-images"
54+
uses: ./.github/workflows/reusable-build-servlet-images.yml
55+
5056
required-status-check:
5157
needs:
5258
- common
5359
- test-latest-deps
60+
- test-native
5461
- muzzle
5562
- lint
63+
- build-servlet-images
5664
runs-on: ubuntu-latest
5765
if: ${{ always() }}
5866
steps:
5967
- if: |
6068
needs.common.result != 'success' ||
6169
needs.test-latest-deps.result != 'success' ||
6270
needs.muzzle.result != 'success' ||
71+
(
72+
needs.test-native.result != 'success' &&
73+
needs.test-native.result != 'skipped'
74+
) ||
75+
(
76+
needs.build-servlet-images.result != 'success' &&
77+
needs.build-servlet-images.result != 'skipped'
78+
) ||
6379
(
6480
!startsWith(github.base_ref, 'release/') &&
6581
needs.lint.result != 'success'

0 commit comments

Comments
 (0)