CI: use mxcl/xcodebuild instead of fastlane #1152
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- "**" | |
schedule: | |
- cron: "3 3 * * 2" # 3:03 AM, every Tuesday | |
concurrency: | |
group: ci-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
lint-podspec: | |
if: github.event_name != 'pull_request' || !contains(github.event.pull_request.title, '[skip ci]') | |
name: Lint Podspec | |
runs-on: macos-15 | |
steps: | |
- name: Git Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 # required to be able to find Git tags | |
- name: Select Xcode version | |
run: sudo xcodes select 16.4 | |
- name: Install Runtimes | |
uses: nick-fields/retry@v3 | |
with: | |
timeout_minutes: 15 | |
max_attempts: 3 | |
command: xcodebuild -downloadAllPlatforms | |
- name: Lint Podspec | |
run: | | |
set -eo pipefail | |
export LIB_VERSION=$(git describe --tags `git rev-list --tags --max-count=1`) | |
pod lib lint SwiftUIIntrospect.podspec --allow-warnings | |
ci: | |
if: github.event_name != 'pull_request' || !contains(github.event.pull_request.title, '[skip ci]') | |
name: ${{ matrix.platform[0] }} ${{ matrix.platform[1] }} | |
runs-on: macos-15 | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- platform: [iOS, 15] | |
runtime: iOS 15.5 | |
- platform: [iOS, 16] | |
runtime: iOS 16.4 | |
- platform: [iOS, 17] | |
runtime: iOS 17.5 | |
- platform: [iOS, 18] | |
runtime: iOS 18.6 | |
- platform: [iOS, 26] | |
runtime: iOS 26.0 | |
- platform: [tvOS, 15] | |
runtime: tvOS 15.4 | |
- platform: [tvOS, 16] | |
runtime: tvOS 16.4 | |
- platform: [tvOS, 17] | |
runtime: tvOS 17.5 | |
- platform: [tvOS, 18] | |
runtime: tvOS 18.5 | |
- platform: [tvOS, 26] | |
runtime: tvOS 26.0 | |
- platform: [watchOS, 8] | |
runtime: watchOS 8.5 | |
- platform: [watchOS, 9] | |
runtime: watchOS 9.4 | |
- platform: [watchOS, 10] | |
runtime: watchOS 10.5 | |
- platform: [watchOS, 11] | |
runtime: watchOS 11.5 | |
- platform: [watchOS, 26] | |
runtime: watchOS 26.0 | |
- platform: [macOS, 15] | |
runtime: macOS 15 | |
# - platform: [macOS, 26] | |
# runtime: macOS 26.0 | |
- platform: [visionOS, 1] | |
runtime: visionOS 1.2 | |
- platform: [visionOS, 2] | |
runtime: visionOS 2.5 | |
- platform: [visionOS, 26] | |
runtime: visionOS 26.0 | |
steps: | |
- name: Git Checkout | |
uses: actions/checkout@v5 | |
- if: ${{ matrix.platform[0] != 'macOS' }} | |
name: Check for ${{ matrix.runtime }} runtime | |
run: | | |
if xcrun simctl list runtimes | grep -q "${{ matrix.runtime }}"; then | |
echo "has_runtime=true" >> "$GITHUB_ENV" | |
else | |
echo "has_runtime=false" >> "$GITHUB_ENV" | |
fi | |
- name: Select Xcode 26.0 | |
uses: mxcl/xcodebuild@v3 | |
with: | |
xcode: ~26.0 | |
action: none | |
verbosity: xcbeautify | |
- if: ${{ matrix.platform[0] != 'macOS' }} | |
name: Download Required Runtime | |
uses: nick-fields/retry@v3 | |
with: | |
timeout_minutes: 15 | |
max_attempts: 3 | |
command: xcodebuild -downloadPlatform ${{ matrix.platform[0] }} | |
- if: env.has_runtime == 'false' | |
name: List Downloadable Runtimes | |
run: xcodes runtimes --include-betas | |
- if: env.has_runtime == 'false' | |
name: Install Required Runtime (${{ matrix.runtime }}) | |
uses: nick-fields/retry@v3 | |
with: | |
timeout_minutes: 15 | |
max_attempts: 3 | |
command: sudo xcodes runtimes install '${{ matrix.runtime }}' | |
- if: ${{ matrix.platform[0] != 'macOS' }} | |
name: Create Required Simulators | |
run: | | |
set -eo pipefail | |
xcrun simctl delete all | |
fastlane create_simulators platform:${{ matrix.platform[0] }} version:${{ matrix.platform[1] }} | |
- name: List Available Runtimes, Simulators, and Destinations | |
run: | | |
xcrun simctl list | |
xcodebuild -scheme "SwiftUIIntrospect" -showdestinations | |
- if: ${{ matrix.platform[0] != 'watchOS' }} | |
name: Build Showcase | |
uses: mxcl/xcodebuild@v3 | |
with: | |
xcode: ~26.0 | |
platform: ${{ matrix.platform[0] }} | |
platform-version: ~${{ matrix.platform[1] }} | |
action: build | |
scheme: Showcase | |
configuration: Debug | |
verbosity: xcbeautify | |
- if: ${{ matrix.platform[0] == 'watchOS' }} | |
name: Build Library | |
uses: mxcl/xcodebuild@v3 | |
with: | |
xcode: ~26.0 | |
platform: ${{ matrix.platform[0] }} | |
platform-version: ~${{ matrix.platform[1] }} | |
action: build | |
scheme: SwiftUIIntrospect | |
configuration: Debug | |
verbosity: xcbeautify | |
- if: ${{ matrix.platform[0] != 'watchOS' }} | |
name: Run Tests | |
uses: mxcl/xcodebuild@v3 | |
with: | |
xcode: ~26.0 | |
platform: ${{ matrix.platform[0] }} | |
platform-version: ~${{ matrix.platform[1] }} | |
action: test | |
scheme: SwiftUIIntrospectTests | |
configuration: Debug | |
verbosity: xcbeautify | |
framework-archiving: | |
if: github.event_name != 'pull_request' || !contains(github.event.pull_request.title, '[skip ci]') | |
name: Archive Framework (${{ matrix.platform }}) | |
runs-on: macos-15 | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: [iOS, macOS, tvOS, watchOS, visionOS, macCatalyst] | |
include: | |
- platform: iOS | |
destination: "generic/platform=iOS" | |
- platform: macOS | |
destination: "generic/platform=macOS" | |
- platform: tvOS | |
destination: "generic/platform=tvOS" | |
- platform: watchOS | |
destination: "generic/platform=watchOS" | |
- platform: visionOS | |
destination: "generic/platform=visionOS" | |
- platform: macCatalyst | |
destination: "platform=macOS,variant=Mac Catalyst" | |
steps: | |
- name: Git Checkout | |
uses: actions/checkout@v5 | |
- name: Select Xcode version | |
run: sudo xcodes select 16.4 | |
- name: Archive Framework | |
run: | | |
xcodebuild archive \ | |
-scheme "SwiftUIIntrospectTestFramework" \ | |
-destination "${{ matrix.destination }}" \ | |
-archivePath .build/archiving/${{ matrix.platform }} \ | |
SKIP_INSTALL=NO \ | |
BUILD_LIBRARY_FOR_DISTRIBUTION=YES |