Skip to content

Commit be44e32

Browse files
authored
CI: use mxcl/xcodebuild instead of fastlane (#492)
1 parent d274462 commit be44e32

File tree

2 files changed

+140
-212
lines changed

2 files changed

+140
-212
lines changed

.github/workflows/ci.yml

Lines changed: 112 additions & 112 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)