-
Notifications
You must be signed in to change notification settings - Fork 224
144 lines (141 loc) · 4.41 KB
/
ci.yml
File metadata and controls
144 lines (141 loc) · 4.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
name: CI
on:
push:
branches:
- main
schedule:
# Runs at 00:00 UTC every Monday to ensure that CI does not bitrot.
- cron: '0 0 * * 1'
pull_request:
concurrency:
group: ${{ github.ref_name }}
cancel-in-progress: true
jobs:
xcode-build-16:
name: Xcode 16 Build
runs-on: macOS-15
strategy:
matrix:
platforms: [
'iOS_18',
'tvOS_18',
'watchOS_11',
]
fail-fast: false
timeout-minutes: 30
permissions:
contents: read
steps:
- name: Checkout Repo
uses: actions/checkout@v5
- name: Bundle Install
run: bundle install
- name: Select Xcode Version
run: sudo xcode-select --switch /Applications/Xcode_16.4.app/Contents/Developer
- name: Download iOS
if: matrix.platforms == 'iOS_18'
run: |
sudo xcodebuild -runFirstLaunch
sudo xcrun simctl list
sudo xcodebuild -downloadPlatform iOS -buildVersion 22E238
- name: Download tvOS
if: matrix.platforms == 'tvOS_18'
run: |
sudo xcodebuild -runFirstLaunch
sudo xcrun simctl list
sudo xcodebuild -downloadPlatform tvOS -buildVersion 22K154
- name: Download watchOS
if: matrix.platforms == 'watchOS_11'
run: |
sudo xcodebuild -runFirstLaunch
sudo xcrun simctl list
sudo xcodebuild -downloadPlatform watchOS -buildVersion 22S99
- name: Build and Test Framework
run: Scripts/build.swift ${{ matrix.platforms }} xcode
- name: Upload Coverage Reports
if: success()
run: Scripts/upload-coverage-reports.sh ${{ matrix.platforms }}
pod-lint:
name: Pod Lint
runs-on: macOS-15
timeout-minutes: 30
permissions:
contents: read
steps:
- name: Checkout Repo
uses: actions/checkout@v5
- name: Bundle Install
run: bundle install
- name: Select Xcode Version
run: sudo xcode-select --switch /Applications/Xcode_16.4.app/Contents/Developer
- name: Lint Podspec
run: bundle exec pod lib lint --verbose --fail-fast --swift-version=6.0 --allow-warnings # Cocoapods v1.6 now warns about potential naming colisions. We can fix this in the next breaking change.
carthage:
name: Carthage
runs-on: macOS-15
timeout-minutes: 30
permissions:
contents: read
steps:
- name: Checkout Repo
uses: actions/checkout@v5
- name: Bundle Install
run: bundle install
- name: Select Xcode Version
run: sudo xcode-select --switch /Applications/Xcode_16.4.app/Contents/Developer
- name: Install Carthage
run: brew outdated carthage || brew upgrade carthage
- name: Build Framework
run: carthage build --verbose --no-skip-current --use-xcframeworks
spm-16:
name: SPM Build macOS 15
runs-on: macOS-15
strategy:
matrix:
platforms: [
'iOS_18',
'tvOS_18',
'watchOS_11',
'macOS_15',
]
fail-fast: false
timeout-minutes: 30
permissions:
contents: read
steps:
- name: Checkout Repo
uses: actions/checkout@v5
- name: Bundle Install
run: bundle install
- name: Select Xcode Version
run: sudo xcode-select --switch /Applications/Xcode_16.4.app/Contents/Developer
- name: Download iOS
if: matrix.platforms == 'iOS_18'
run: |
sudo xcodebuild -runFirstLaunch
sudo xcrun simctl list
sudo xcodebuild -downloadPlatform iOS -buildVersion 22E238
- name: Download tvOS
if: matrix.platforms == 'tvOS_18'
run: |
sudo xcodebuild -runFirstLaunch
sudo xcrun simctl list
sudo xcodebuild -downloadPlatform tvOS -buildVersion 22K154
- name: Download watchOS
if: matrix.platforms == 'watchOS_11'
run: |
sudo xcodebuild -runFirstLaunch
sudo xcrun simctl list
sudo xcodebuild -downloadPlatform watchOS -buildVersion 22S99
- name: Build Framework
run: Scripts/build.swift ${{ matrix.platforms }} spm
readme-validation:
name: Check Markdown links
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout Repo
uses: actions/checkout@v5
- name: Link Checker
uses: AlexanderDokuchaev/md-dead-link-check@d5a37e0b14e5918605d22b34562532762ccb2e47 # v1.2.0