Skip to content

Commit 171ac1c

Browse files
authored
Update pull-request.yml
1 parent 26f1002 commit 171ac1c

1 file changed

Lines changed: 122 additions & 38 deletions

File tree

.github/workflows/pull-request.yml

Lines changed: 122 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,7 @@ name: Build
33
on:
44
pull_request:
55
branches: ["flutter"]
6-
paths-ignore:
7-
- '**.md'
8-
- 'docs/**'
9-
- '**.png'
10-
- '**.jpg'
11-
- '**.jpeg'
12-
- '**.gif'
13-
- '**.svg'
14-
- '**.webp'
15-
- '**.txt'
16-
- '**.arb'
6+
177
concurrency:
188
group: ${{ github.workflow }}-${{ github.ref }}
199
cancel-in-progress: true
@@ -25,138 +15,232 @@ env:
2515
IPAD_DEVICE_MODEL: iPad Pro 13-inch (M4)
2616

2717
jobs:
18+
changes:
19+
name: Detect Changes
20+
runs-on: ubuntu-latest
21+
outputs:
22+
is_code: ${{ steps.filter.outputs.code }}
23+
steps:
24+
- uses: actions/checkout@v4
25+
- uses: dorny/paths-filter@v3
26+
id: filter
27+
with:
28+
filters: |
29+
code:
30+
- '**'
31+
- '!**.md'
32+
- '!docs/**'
33+
- '!**.png'
34+
- '!**.jpg'
35+
- '!**.jpeg'
36+
- '!**.gif'
37+
- '!**.svg'
38+
- '!**.webp'
39+
- '!**.txt'
40+
- '!**.arb'
41+
2842
common:
2943
name: Common Build
44+
needs: changes
3045
runs-on: ubuntu-latest
3146
steps:
32-
- uses: actions/checkout@v6
47+
- uses: actions/checkout@v4
48+
if: needs.changes.outputs.is_code == 'true'
3349

3450
- name: Common Workflow
51+
if: needs.changes.outputs.is_code == 'true'
3552
uses: ./.github/actions/common
3653

3754
- name: Save PR number
55+
if: needs.changes.outputs.is_code == 'true'
3856
run: |
3957
mkdir -p ./pr
4058
echo ${{ github.event.number }} > ./pr/NR
4159
42-
- uses: actions/upload-artifact@v7
60+
- uses: actions/upload-artifact@v4
61+
if: needs.changes.outputs.is_code == 'true'
4362
with:
4463
name: pr
4564
path: pr/
4665

66+
- name: Docs Only Bypass
67+
if: needs.changes.outputs.is_code != 'true'
68+
run: echo "Docs-only change detected. Bypassing common tasks."
69+
4770
android:
4871
name: Android Flutter Build
49-
needs: common
72+
needs: [changes, common]
5073
runs-on: ubuntu-latest
5174
steps:
52-
- uses: actions/checkout@v6
75+
- uses: actions/checkout@v4
76+
if: needs.changes.outputs.is_code == 'true'
5377

5478
- name: Android Workflow
79+
if: needs.changes.outputs.is_code == 'true'
5580
uses: ./.github/actions/android
5681

82+
- name: Docs Only Bypass
83+
if: needs.changes.outputs.is_code != 'true'
84+
run: echo "Docs-only change detected. Bypassing Android build."
85+
5786
ios:
5887
name: iOS Flutter Build
59-
needs: common
60-
runs-on: macos-latest
88+
needs: [changes, common]
89+
runs-on: ${{ needs.changes.outputs.is_code == 'true' && 'macos-latest' || 'ubuntu-latest' }}
6190
steps:
6291
- name: Set up Xcode
92+
if: needs.changes.outputs.is_code == 'true'
6393
uses: maxim-lobanov/setup-xcode@v1.7.0
6494
with:
6595
xcode-version: '16.4.0'
6696

67-
- uses: actions/checkout@v6
97+
- uses: actions/checkout@v4
98+
if: needs.changes.outputs.is_code == 'true'
6899

69100
- name: iOS Workflow
101+
if: needs.changes.outputs.is_code == 'true'
70102
uses: ./.github/actions/ios
71103

104+
- name: Docs Only Bypass
105+
if: needs.changes.outputs.is_code != 'true'
106+
run: echo "Docs-only change detected. Bypassing iOS build."
107+
72108
screenshots-android:
73109
name: Screenshots (Android)
110+
needs: changes
74111
runs-on: ubuntu-latest
75112
timeout-minutes: 30
76113
steps:
77-
- uses: actions/checkout@v6
114+
- uses: actions/checkout@v4
115+
if: needs.changes.outputs.is_code == 'true'
78116

79117
- name: Android Screenshot Workflow
118+
if: needs.changes.outputs.is_code == 'true'
80119
uses: ./.github/actions/screenshot-android
81120
with:
82121
ANDROID_EMULATOR_API: ${{ env.ANDROID_EMULATOR_API }}
83122
ANDROID_EMULATOR_ARCH: ${{ env.ANDROID_EMULATOR_ARCH }}
84123

124+
- name: Docs Only Bypass
125+
if: needs.changes.outputs.is_code != 'true'
126+
run: echo "Docs-only change detected. Bypassing Android screenshots."
127+
85128
screenshots-iphone:
86129
name: Screenshots (iPhone)
87-
runs-on: macos-latest
130+
needs: changes
131+
runs-on: ${{ needs.changes.outputs.is_code == 'true' && 'macos-latest' || 'ubuntu-latest' }}
88132
timeout-minutes: 30
89133
steps:
90134
- name: Set up Xcode
135+
if: needs.changes.outputs.is_code == 'true'
91136
uses: maxim-lobanov/setup-xcode@v1.7.0
92137
with:
93138
xcode-version: '16.4.0'
94139

95-
- uses: actions/checkout@v6
140+
- uses: actions/checkout@v4
141+
if: needs.changes.outputs.is_code == 'true'
96142

97143
- name: iPhone Screenshot Workflow
144+
if: needs.changes.outputs.is_code == 'true'
98145
uses: ./.github/actions/screenshot-iphone
99146
with:
100147
IPHONE_DEVICE_MODEL: ${{ env.IPHONE_DEVICE_MODEL }}
101-
148+
149+
- name: Docs Only Bypass
150+
if: needs.changes.outputs.is_code != 'true'
151+
run: echo "Docs-only change detected. Bypassing iPhone screenshots."
152+
102153
screenshots-ipad:
103154
name: Screenshots (iPad)
104-
runs-on: macos-latest
155+
needs: changes
156+
runs-on: ${{ needs.changes.outputs.is_code == 'true' && 'macos-latest' || 'ubuntu-latest' }}
105157
timeout-minutes: 30
106158
steps:
107159
- name: Set up Xcode
160+
if: needs.changes.outputs.is_code == 'true'
108161
uses: maxim-lobanov/setup-xcode@v1.7.0
109162
with:
110163
xcode-version: '16.4.0'
111164

112-
- uses: actions/checkout@v6
165+
- uses: actions/checkout@v4
166+
if: needs.changes.outputs.is_code == 'true'
113167

114168
- name: iPad Screenshot Workflow
169+
if: needs.changes.outputs.is_code == 'true'
115170
uses: ./.github/actions/screenshot-ipad
116171
with:
117172
IPAD_DEVICE_MODEL: ${{ env.IPAD_DEVICE_MODEL }}
118-
173+
174+
- name: Docs Only Bypass
175+
if: needs.changes.outputs.is_code != 'true'
176+
run: echo "Docs-only change detected. Bypassing iPad screenshots."
177+
119178
windows:
120179
name: Windows Flutter Build
121-
needs: common
122-
runs-on: windows-latest
180+
needs: [changes, common]
181+
runs-on: ${{ needs.changes.outputs.is_code == 'true' && 'windows-latest' || 'ubuntu-latest' }}
123182
steps:
124-
- uses: actions/checkout@v6
183+
- uses: actions/checkout@v4
184+
if: needs.changes.outputs.is_code == 'true'
125185

126186
- name: Windows Workflow
187+
if: needs.changes.outputs.is_code == 'true'
127188
uses: ./.github/actions/windows
128-
189+
190+
- name: Docs Only Bypass
191+
if: needs.changes.outputs.is_code != 'true'
192+
run: echo "Docs-only change detected. Bypassing Windows build."
193+
129194
linux:
130195
name: Linux Flutter Build
131-
needs: common
196+
needs: [changes, common]
132197
runs-on: ubuntu-latest
133198
steps:
134-
- uses: actions/checkout@v6
199+
- uses: actions/checkout@v4
200+
if: needs.changes.outputs.is_code == 'true'
135201

136202
- name: Linux Workflow
203+
if: needs.changes.outputs.is_code == 'true'
137204
uses: ./.github/actions/linux
138205

206+
- name: Docs Only Bypass
207+
if: needs.changes.outputs.is_code != 'true'
208+
run: echo "Docs-only change detected. Bypassing Linux build."
209+
139210
linux-arm64:
140211
name: Linux ARM64 Flutter Build
141-
needs: common
142-
runs-on: ubuntu-24.04-arm
212+
needs: [changes, common]
213+
runs-on: ${{ needs.changes.outputs.is_code == 'true' && 'ubuntu-24.04-arm' || 'ubuntu-latest' }}
143214
steps:
144-
- uses: actions/checkout@v6
215+
- uses: actions/checkout@v4
216+
if: needs.changes.outputs.is_code == 'true'
145217

146218
- name: Linux ARM64 Workflow
219+
if: needs.changes.outputs.is_code == 'true'
147220
uses: ./.github/actions/linux-arm64
148221

222+
- name: Docs Only Bypass
223+
if: needs.changes.outputs.is_code != 'true'
224+
run: echo "Docs-only change detected. Bypassing Linux ARM64 build."
225+
149226
macos:
150227
name: macOS Flutter Build
151-
needs: common
152-
runs-on: macos-latest
228+
needs: [changes, common]
229+
runs-on: ${{ needs.changes.outputs.is_code == 'true' && 'macos-latest' || 'ubuntu-latest' }}
153230
steps:
154231
- name: Set up Xcode
232+
if: needs.changes.outputs.is_code == 'true'
155233
uses: maxim-lobanov/setup-xcode@v1.7.0
156234
with:
157235
xcode-version: '16.4.0'
158236

159-
- uses: actions/checkout@v6
237+
- uses: actions/checkout@v4
238+
if: needs.changes.outputs.is_code == 'true'
160239

161240
- name: macOS Workflow
162-
uses: ./.github/actions/macos
241+
if: needs.changes.outputs.is_code == 'true'
242+
uses: ./.github/actions/macos
243+
244+
- name: Docs Only Bypass
245+
if: needs.changes.outputs.is_code != 'true'
246+
run: echo "Docs-only change detected. Bypassing macOS build."

0 commit comments

Comments
 (0)