@@ -43,158 +43,158 @@ jobs:
4343
4444 ci :
4545 if : github.event_name != 'pull_request' || !contains(github.event.pull_request.title, '[skip ci]')
46- name : ${{ matrix.platform [0] }} ${{ matrix.platform [1] }}
47- runs-on : ${{ matrix.os }}
46+ name : ${{ matrix.runtime [0] }} ${{ matrix.runtime [1] }}
47+ runs-on : macos-15
4848 strategy :
4949 fail-fast : false
5050 matrix :
51- include :
52- - platform : [iOS, 15]
53- runtime : iOS 15.5
54- os : macos-15
55- xcode : 26.0
56- - platform : [iOS, 16]
57- runtime : iOS 16.4
58- os : macos-15
59- xcode : 26.0
60- - platform : [iOS, 17]
61- runtime : iOS 17.5
62- os : macos-15
63- xcode : 26.0
64- - platform : [iOS, 18]
65- runtime : iOS 18.6
66- os : macos-15
67- xcode : 26.0
68- - platform : [iOS, 26]
69- runtime : iOS 26.0
70- os : macos-15
71- xcode : 26.0
72-
73- - platform : [tvOS, 15]
74- runtime : tvOS 15.4
75- os : macos-15
76- xcode : 26.0
77- - platform : [tvOS, 16]
78- runtime : tvOS 16.4
79- os : macos-15
80- xcode : 26.0
81- - platform : [tvOS, 17]
82- runtime : tvOS 17.5
83- os : macos-15
84- xcode : 26.0
85- - platform : [tvOS, 18]
86- runtime : tvOS 18.5
87- os : macos-15
88- xcode : 26.0
89- - platform : [tvOS, 26]
90- runtime : tvOS 26.0
91- os : macos-15
92- xcode : 26.0
93-
94- - platform : [watchOS, 8]
95- runtime : watchOS 8.5
96- os : macos-15
97- xcode : 26.0
98- - platform : [watchOS, 9]
99- runtime : watchOS 9.4
100- os : macos-15
101- xcode : 26.0
102- - platform : [watchOS, 10]
103- runtime : watchOS 10.5
104- os : macos-15
105- xcode : 26.0
106- - platform : [watchOS, 11]
107- runtime : watchOS 11.5
108- os : macos-15
109- xcode : 26.0
110- - platform : [watchOS, 26]
111- runtime : watchOS 26.0
112- os : macos-15
113- xcode : 26.0
114-
115- - platform : [macOS, 15]
116- runtime : macOS 15
117- os : macos-15
118- xcode : 26.0
119- # - platform: [macOS, 26]
120- # runtime: macOS 26.0
121- # os: macos-26
122- # xcode: 26.0
123-
124- - platform : [visionOS, 1]
125- runtime : visionOS 1.2
126- os : macos-15
127- xcode : 26.0
128- - platform : [visionOS, 2]
129- runtime : visionOS 2.5
130- os : macos-15
131- xcode : 26.0
132- - platform : [visionOS, 26]
133- runtime : visionOS 26.0
134- os : macos-15
135- xcode : 26.0
51+ runtime :
52+ - [iOS, 15, 5]
53+ - [iOS, 16, 4]
54+ - [iOS, 17, 5]
55+ - [iOS, 18, 6]
56+ - [iOS, 26, 0]
57+
58+ - [iPadOS, 15, 5]
59+ - [iPadOS, 16, 4]
60+ - [iPadOS, 17, 5]
61+ - [iPadOS, 18, 6]
62+ - [iPadOS, 26, 0]
63+
64+ - [tvOS, 15, 4]
65+ - [tvOS, 16, 4]
66+ - [tvOS, 17, 5]
67+ - [tvOS, 18, 5]
68+ - [tvOS, 26, 0]
69+
70+ - [watchOS, 8, 5]
71+ - [watchOS, 9, 4]
72+ - [watchOS, 10, 5]
73+ - [watchOS, 11, 5]
74+ - [watchOS, 26, 0]
75+
76+ - [macOS, 15, 0]
77+ # - [macOS, 26, 0]
78+
79+ - [visionOS, 1, 2]
80+ - [visionOS, 2, 5]
81+ - [visionOS, 26, 0]
13682 steps :
13783 - name : Git Checkout
138- uses : actions/checkout@v4
84+ uses : actions/checkout@v5
85+
86+ - name : Set Environment Variables
87+ run : |
88+ set -euo pipefail
89+
90+ PLATFORM="${{ matrix.runtime[0] }}"
91+ MAJOR="${{ matrix.runtime[1] }}"
92+ MINOR="${{ matrix.runtime[2] }}"
93+
94+ if [ "$PLATFORM" = "iPadOS" ]; then
95+ PLATFORM=iOS
96+ FASTLANE_PLATFORM=ipados
97+ else
98+ case "$PLATFORM" in
99+ iOS) FASTLANE_PLATFORM=ios ;;
100+ tvOS) FASTLANE_PLATFORM=tvos ;;
101+ watchOS) FASTLANE_PLATFORM=watchos ;;
102+ visionOS) FASTLANE_PLATFORM=visionos ;;
103+ macOS) FASTLANE_PLATFORM=macos ;;
104+ esac
105+ fi
139106
140- - name : Set environment variables
141- run : echo "SKIP_SLOW_FASTLANE_WARNING=1" >> $GITHUB_ENV
107+ RUNTIME="$PLATFORM $MAJOR.$MINOR"
142108
143- - if : ${{ matrix.platform[0] != 'macOS' }}
144- name : Check for ${{ matrix.runtime }} runtime
109+ echo "PLATFORM=$PLATFORM" >> $GITHUB_ENV
110+ echo "MAJOR=$MAJOR" >> $GITHUB_ENV
111+ echo "MINOR=$MINOR" >> $GITHUB_ENV
112+ echo "RUNTIME=$RUNTIME" >> $GITHUB_ENV
113+ echo "FASTLANE_PLATFORM=$FASTLANE_PLATFORM" >> $GITHUB_ENV
114+
115+ - if : ${{ env.PLATFORM != 'macOS' }}
116+ name : Check for ${{ env.RUNTIME }} runtime
145117 run : |
146- if xcrun simctl list runtimes | grep -q "${{ matrix.runtime }} "; then
118+ if xcrun simctl list runtimes | grep -q "$RUNTIME "; then
147119 echo "has_runtime=true" >> "$GITHUB_ENV"
148120 else
149121 echo "has_runtime=false" >> "$GITHUB_ENV"
150122 fi
151123
152- - name : Select Xcode ${{ matrix.xcode }}
153- run : sudo xcodes select ${{ matrix.xcode }}
124+ - name : Select Xcode 26.0
125+ uses : mxcl/xcodebuild@v3
126+ with :
127+ xcode : ~26.0
128+ action : none
129+ verbosity : xcbeautify
154130
155- - if : ${{ matrix.xcode == '26.0' && matrix.platform[0] != 'macOS' }}
156- name : Install 2026 Runtime
131+ - if : ${{ env.PLATFORM != 'macOS' }}
132+ name : Download Required Runtime
157133 uses : nick-fields/retry@v3
158134 with :
159135 timeout_minutes : 15
160136 max_attempts : 3
161- command : xcodebuild -downloadPlatform ${{ matrix.platform[0] }}
137+ command : xcodebuild -downloadPlatform ${{ env.PLATFORM }}
162138
163139 - if : env.has_runtime == 'false'
164- name : " List Downloadable Runtimes"
140+ name : List Downloadable Runtimes
165141 run : xcodes runtimes --include-betas
166142
167143 - if : env.has_runtime == 'false'
168- name : Install Required Runtime (${{ matrix.runtime }})
144+ name : Install Required Runtime (${{ env.RUNTIME }})
169145 uses : nick-fields/retry@v3
170146 with :
171147 timeout_minutes : 15
172148 max_attempts : 3
173- command : sudo xcodes runtimes install '${{ matrix.runtime }}'
149+ command : sudo xcodes runtimes install "$RUNTIME"
174150
175- - if : ${{ matrix.platform[0] != 'macOS' }}
151+ - if : ${{ env.PLATFORM != 'macOS' }}
176152 name : Create Required Simulators
177153 run : |
178154 set -eo pipefail
179155 xcrun simctl delete all
180- fastlane create_simulators platform:${{ matrix.platform[0] }} version:${{ matrix.platform[1] }}
156+ fastlane create_simulators platform:${{ env.FASTLANE_PLATFORM }} version:${{ env.MAJOR }}
181157
182158 - name : List Available Runtimes, Simulators, and Destinations
183159 run : |
184160 xcrun simctl list
185161 xcodebuild -scheme "SwiftUIIntrospect" -showdestinations
186162
187- - if : ${{ matrix.platform[0] != 'watchOS' }}
163+ - if : ${{ env.PLATFORM != 'watchOS' }}
188164 name : Build Showcase
189- run : fastlane build platform:${{ matrix.platform[0] }} version:${{ matrix.platform[1] }} scheme:Showcase
190-
191- - if : ${{ matrix.platform[0] == 'watchOS' }}
165+ uses : mxcl/xcodebuild@v3
166+ with :
167+ xcode : ~26.0
168+ platform : ${{ env.PLATFORM }}
169+ platform-version : ~${{ env.MAJOR }}.${{ env.MINOR }}
170+ action : build
171+ scheme : Showcase
172+ configuration : Debug
173+ verbosity : xcbeautify
174+
175+ - if : ${{ env.PLATFORM == 'watchOS' }}
192176 name : Build Library
193- run : fastlane build platform:${{ matrix.platform[0] }} version:${{ matrix.platform[1] }} scheme:SwiftUIIntrospect
194-
195- - if : ${{ matrix.platform[0] != 'watchOS' }}
177+ uses : mxcl/xcodebuild@v3
178+ with :
179+ xcode : ~26.0
180+ platform : ${{ env.PLATFORM }}
181+ platform-version : ~${{ env.MAJOR }}.${{ env.MINOR }}
182+ action : build
183+ scheme : SwiftUIIntrospect
184+ configuration : Debug
185+ verbosity : xcbeautify
186+
187+ - if : ${{ env.PLATFORM != 'watchOS' }}
196188 name : Run Tests
197- run : fastlane test platform:${{ matrix.platform[0] }} version:${{ matrix.platform[1] }} scheme:SwiftUIIntrospectTests configuration:Debug
189+ uses : mxcl/xcodebuild@v3
190+ with :
191+ xcode : ~26.0
192+ platform : ${{ env.PLATFORM }}
193+ platform-version : ~${{ env.MAJOR }}.${{ env.MINOR }}
194+ action : test
195+ scheme : SwiftUIIntrospectTests
196+ configuration : Debug
197+ verbosity : xcbeautify
198198
199199 framework-archiving :
200200 if : github.event_name != 'pull_request' || !contains(github.event.pull_request.title, '[skip ci]')
@@ -219,7 +219,7 @@ jobs:
219219 destination : " platform=macOS,variant=Mac Catalyst"
220220 steps :
221221 - name : Git Checkout
222- uses : actions/checkout@v4
222+ uses : actions/checkout@v5
223223
224224 - name : Select Xcode version
225225 run : sudo xcodes select 16.4
0 commit comments