@@ -3,17 +3,7 @@ name: Build
33on :
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+
177concurrency :
188 group : ${{ github.workflow }}-${{ github.ref }}
199 cancel-in-progress : true
2515 IPAD_DEVICE_MODEL : iPad Pro 13-inch (M4)
2616
2717jobs :
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 :
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