Skip to content

Commit 6c5ed51

Browse files
authored
Enhance pull request workflow with code change detection
Updated pull request workflow to include code change detection and conditional builds for Android, iOS, and screenshot jobs.
1 parent 75b7164 commit 6c5ed51

1 file changed

Lines changed: 54 additions & 22 deletions

File tree

.github/workflows/pull-request.yml

Lines changed: 54 additions & 22 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,6 +15,28 @@ env:
2515
IPAD_DEVICE_MODEL: iPad Pro 13-inch (M4)
2616

2717
jobs:
18+
19+
changes:
20+
name: Detect Code Changes
21+
runs-on: ubuntu-latest
22+
outputs:
23+
code: ${{ steps.filter.outputs.code }}
24+
steps:
25+
- uses: actions/checkout@v6
26+
27+
- id: filter
28+
uses: dorny/paths-filter@v3
29+
with:
30+
filters: |
31+
code:
32+
- '**.dart'
33+
- 'android/**'
34+
- 'ios/**'
35+
- 'lib/**'
36+
- 'linux/**'
37+
- 'windows/**'
38+
- 'macos/**'
39+
2840
common:
2941
name: Common Build
3042
runs-on: ubuntu-latest
@@ -46,31 +58,43 @@ jobs:
4658

4759
android:
4860
name: Android Flutter Build
49-
needs: common
61+
needs: [common, changes]
5062
runs-on: ubuntu-latest
5163
steps:
5264
- uses: actions/checkout@v6
5365

66+
- name: Skip Android build for docs
67+
if: needs.changes.outputs.code != 'true'
68+
run: echo "non-code changes"
69+
5470
- name: Android Workflow
71+
if: needs.changes.outputs.code == 'true'
5572
uses: ./.github/actions/android
5673

5774
ios:
5875
name: iOS Flutter Build
59-
needs: common
76+
needs: [common, changes]
6077
runs-on: macos-latest
6178
steps:
6279
- name: Set up Xcode
6380
uses: maxim-lobanov/setup-xcode@v1.7.0
6481
with:
6582
xcode-version: '16.4.0'
66-
83+
6784
- uses: actions/checkout@v6
6885

86+
- name: Skip iOS build for docs
87+
if: needs.changes.outputs.code != 'true'
88+
run: echo "non-code changes"
89+
6990
- name: iOS Workflow
91+
if: needs.changes.outputs.code == 'true'
7092
uses: ./.github/actions/ios
7193

7294
screenshots-android:
7395
name: Screenshots (Android)
96+
needs: [changes]
97+
if: needs.changes.outputs.code == 'true'
7498
runs-on: ubuntu-latest
7599
timeout-minutes: 30
76100
steps:
@@ -84,6 +108,8 @@ jobs:
84108

85109
screenshots-iphone:
86110
name: Screenshots (iPhone)
111+
needs: [changes]
112+
if: needs.changes.outputs.code == 'true'
87113
runs-on: macos-latest
88114
timeout-minutes: 30
89115
steps:
@@ -98,9 +124,11 @@ jobs:
98124
uses: ./.github/actions/screenshot-iphone
99125
with:
100126
IPHONE_DEVICE_MODEL: ${{ env.IPHONE_DEVICE_MODEL }}
101-
127+
102128
screenshots-ipad:
103129
name: Screenshots (iPad)
130+
needs: [changes]
131+
if: needs.changes.outputs.code == 'true'
104132
runs-on: macos-latest
105133
timeout-minutes: 30
106134
steps:
@@ -115,20 +143,22 @@ jobs:
115143
uses: ./.github/actions/screenshot-ipad
116144
with:
117145
IPAD_DEVICE_MODEL: ${{ env.IPAD_DEVICE_MODEL }}
118-
146+
119147
windows:
120148
name: Windows Flutter Build
121-
needs: common
149+
needs: [common, changes]
150+
if: needs.changes.outputs.code == 'true'
122151
runs-on: windows-latest
123152
steps:
124153
- uses: actions/checkout@v6
125154

126155
- name: Windows Workflow
127156
uses: ./.github/actions/windows
128-
157+
129158
linux:
130159
name: Linux Flutter Build
131-
needs: common
160+
needs: [common, changes]
161+
if: needs.changes.outputs.code == 'true'
132162
runs-on: ubuntu-latest
133163
steps:
134164
- uses: actions/checkout@v6
@@ -138,7 +168,8 @@ jobs:
138168

139169
linux-arm64:
140170
name: Linux ARM64 Flutter Build
141-
needs: common
171+
needs: [common, changes]
172+
if: needs.changes.outputs.code == 'true'
142173
runs-on: ubuntu-24.04-arm
143174
steps:
144175
- uses: actions/checkout@v6
@@ -148,7 +179,8 @@ jobs:
148179

149180
macos:
150181
name: macOS Flutter Build
151-
needs: common
182+
needs: [common, changes]
183+
if: needs.changes.outputs.code == 'true'
152184
runs-on: macos-latest
153185
steps:
154186
- name: Set up Xcode
@@ -159,4 +191,4 @@ jobs:
159191
- uses: actions/checkout@v6
160192

161193
- name: macOS Workflow
162-
uses: ./.github/actions/macos
194+
uses: ./.github/actions/macos

0 commit comments

Comments
 (0)