Skip to content

Commit d73fe0e

Browse files
authored
Bump the Swift version to 6.0 (#2)
* Bump the Swift version to 6.0 * Update workflows
1 parent b33333f commit d73fe0e

9 files changed

+284
-38
lines changed

.github/workflows/ci.yml

Lines changed: 202 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ on:
1212
- "Package.swift"
1313
- "Source/**"
1414
- "Tests/**"
15+
1516
jobs:
1617
SwiftLint:
1718
runs-on: ubuntu-latest
@@ -23,40 +24,214 @@ jobs:
2324
args: --strict
2425
env:
2526
DIFF_BASE: ${{ github.base_ref }}
26-
Latest:
27-
name: Test Latest (iOS, macOS, tvOS, watchOS)
28-
runs-on: macOS-12
27+
macOS:
28+
name: ${{ matrix.name }}
29+
runs-on: ${{ matrix.runsOn }}
30+
env:
31+
DEVELOPER_DIR: "/Applications/${{ matrix.xcode }}.app/Contents/Developer"
32+
timeout-minutes: 20
33+
strategy:
34+
fail-fast: false
35+
matrix:
36+
include:
37+
- xcode: "Xcode_16.0"
38+
runsOn: macOS-14
39+
name: "macOS 14, Xcode 16.0, Swift 6.0"
40+
- xcode: "Xcode_15.4"
41+
runsOn: macOS-14
42+
name: "macOS 14, Xcode 15.4, Swift 5.10"
43+
- xcode: "Xcode_15.0"
44+
runsOn: macos-13
45+
name: "macOS 13, Xcode 15.0, Swift 5.9.0"
46+
- xcode: "Xcode_14.3.1"
47+
runsOn: macos-13
48+
name: "macOS 13, Xcode 14.3.1, Swift 5.8.0"
49+
steps:
50+
- uses: actions/checkout@v3
51+
- name: ${{ matrix.name }}
52+
run: xcodebuild test -scheme "Lazy" -destination "platform=macOS" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1
53+
- name: Upload test coverage reports to Codecov
54+
uses: space-code/oss-common-actions/.github/actions/upload_test_coverage_report@main
55+
with:
56+
scheme_name: Lazy
57+
filename: ${{ matrix.name }}
58+
token: ${{ secrets.CODECOV_TOKEN }}
59+
60+
iOS:
61+
name: ${{ matrix.name }}
62+
runs-on: ${{ matrix.runsOn }}
63+
env:
64+
DEVELOPER_DIR: "/Applications/${{ matrix.xcode }}.app/Contents/Developer"
65+
timeout-minutes: 20
66+
strategy:
67+
fail-fast: false
68+
matrix:
69+
include:
70+
- destination: "OS=18.1,name=iPhone 16 Pro"
71+
name: "iOS 18.1"
72+
xcode: "Xcode_16.1"
73+
runsOn: macOS-14
74+
- destination: "OS=18.0,name=iPhone 16 Pro"
75+
name: "iOS 18.0"
76+
xcode: "Xcode_16.0"
77+
runsOn: macOS-14
78+
- destination: "OS=17.5,name=iPhone 15 Pro"
79+
name: "iOS 17.5"
80+
xcode: "Xcode_15.4"
81+
runsOn: macOS-14
82+
- destination: "OS=17.0.1,name=iPhone 14 Pro"
83+
name: "iOS 17.0.1"
84+
xcode: "Xcode_15.0"
85+
runsOn: macos-13
86+
- destination: "OS=16.4,name=iPhone 14 Pro"
87+
name: "iOS 16.4"
88+
xcode: "Xcode_14.3.1"
89+
runsOn: macos-13
90+
steps:
91+
- uses: actions/checkout@v3
92+
- name: ${{ matrix.name }}
93+
run: xcodebuild test -scheme "Lazy" -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1
94+
- name: Upload test coverage reports to Codecov
95+
uses: space-code/oss-common-actions/.github/actions/upload_test_coverage_report@main
96+
with:
97+
scheme_name: Lazy
98+
filename: ${{ matrix.name }}
99+
token: ${{ secrets.CODECOV_TOKEN }}
100+
101+
tvOS:
102+
name: ${{ matrix.name }}
103+
runs-on: ${{ matrix.runsOn }}
104+
env:
105+
DEVELOPER_DIR: "/Applications/${{ matrix.xcode }}.app/Contents/Developer"
106+
timeout-minutes: 20
107+
strategy:
108+
fail-fast: false
109+
matrix:
110+
include:
111+
- destination: "OS=18.1,name=Apple TV"
112+
name: "tvOS 18.1"
113+
xcode: "Xcode_16.1"
114+
runsOn: macOS-14
115+
- destination: "OS=18.0,name=Apple TV"
116+
name: "tvOS 18.0"
117+
xcode: "Xcode_16.0"
118+
runsOn: macOS-14
119+
- destination: "OS=17.5,name=Apple TV"
120+
name: "tvOS 17.5"
121+
xcode: "Xcode_15.4"
122+
runsOn: macOS-14
123+
- destination: "OS=17.0,name=Apple TV"
124+
name: "tvOS 17.0"
125+
xcode: "Xcode_15.0"
126+
runsOn: macos-13
127+
- destination: "OS=16.4,name=Apple TV"
128+
name: "tvOS 16.4"
129+
xcode: "Xcode_14.3.1"
130+
runsOn: macos-13
131+
steps:
132+
- uses: actions/checkout@v3
133+
- name: ${{ matrix.name }}
134+
run: xcodebuild test -scheme "Lazy" -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1
135+
- name: Upload test coverage reports to Codecov
136+
uses: space-code/oss-common-actions/.github/actions/upload_test_coverage_report@main
137+
with:
138+
scheme_name: Lazy
139+
filename: ${{ matrix.name }}
140+
token: ${{ secrets.CODECOV_TOKEN }}
141+
142+
watchOS:
143+
name: ${{ matrix.name }}
144+
runs-on: ${{ matrix.runsOn }}
29145
env:
30-
DEVELOPER_DIR: "/Applications/Xcode_14.1.app/Contents/Developer"
31-
timeout-minutes: 10
146+
DEVELOPER_DIR: "/Applications/${{ matrix.xcode }}.app/Contents/Developer"
147+
timeout-minutes: 20
32148
strategy:
33149
fail-fast: false
34150
matrix:
35151
include:
36-
- destination: "OS=16.1,name=iPhone 14 Pro"
37-
name: "iOS"
38-
scheme: "Lazy"
39-
sdk: iphonesimulator
40-
- destination: "OS=16.1,name=Apple TV"
41-
name: "tvOS"
42-
scheme: "Lazy"
43-
sdk: appletvsimulator
44-
- destination: "OS=9.1,name=Apple Watch Series 8 (45mm)"
45-
name: "watchOS"
46-
scheme: "Lazy"
47-
sdk: watchsimulator
48-
- destination: "platform=macOS"
49-
name: "macOS"
50-
scheme: "Lazy"
51-
sdk: macosx
152+
- destination: "OS=11.1,name=Apple Watch Series 10 (46mm)"
153+
name: "watchOS 11.1"
154+
xcode: "Xcode_16.1"
155+
runsOn: macOS-14
156+
- destination: "OS=11.0,name=Apple Watch Series 10 (46mm)"
157+
name: "watchOS 11.0"
158+
xcode: "Xcode_16.0"
159+
runsOn: macOS-14
160+
- destination: "OS=10.5,name=Apple Watch Series 9 (45mm)"
161+
name: "watchOS 10.5"
162+
xcode: "Xcode_15.4"
163+
runsOn: macOS-14
164+
- destination: "OS=10.0,name=Apple Watch Series 9 (45mm)"
165+
name: "watchOS 10.0"
166+
xcode: "Xcode_15.0"
167+
runsOn: macos-13
168+
- destination: "OS=9.4,name=Apple Watch Series 8 (45mm)"
169+
name: "watchOS 9.4"
170+
xcode: "Xcode_14.3.1"
171+
runsOn: macos-13
52172
steps:
53173
- uses: actions/checkout@v3
54174
- name: ${{ matrix.name }}
55-
run: xcodebuild test -scheme "${{ matrix.scheme }}" -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES -resultBundlePath "./${{ matrix.sdk }}.xcresult" | xcpretty -r junit
56-
- name: Upload coverage reports to Codecov
57-
uses: codecov/codecov-action@v3.1.0
175+
run: xcodebuild test -scheme "Lazy" -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1
176+
- name: Upload test coverage reports to Codecov
177+
uses: space-code/oss-common-actions/.github/actions/upload_test_coverage_report@main
58178
with:
179+
scheme_name: Lazy
180+
filename: ${{ matrix.name }}
59181
token: ${{ secrets.CODECOV_TOKEN }}
60-
xcode: true
61-
xcode_archive_path: "./${{ matrix.sdk }}.xcresult"
62-
182+
183+
spm:
184+
name: ${{ matrix.name }}
185+
runs-on: ${{ matrix.runsOn }}
186+
env:
187+
DEVELOPER_DIR: "/Applications/${{ matrix.xcode }}.app/Contents/Developer"
188+
timeout-minutes: 20
189+
strategy:
190+
fail-fast: false
191+
matrix:
192+
include:
193+
- name: "macOS 14, SPM 6.0.2 Test"
194+
xcode: "Xcode_16.1"
195+
runsOn: macOS-14
196+
- name: "macOS 14, SPM 6.0.0 Test"
197+
xcode: "Xcode_16.0"
198+
runsOn: macOS-14
199+
- name: "macOS 14, SPM 5.9.0 Test"
200+
xcode: "Xcode_15.0"
201+
runsOn: macos-14
202+
- name: "macOS 13, SPM 5.8.1 Test"
203+
xcode: "Xcode_14.3.1"
204+
runsOn: macos-13
205+
steps:
206+
- uses: actions/checkout@v3
207+
- name: ${{ matrix.name }}
208+
run: swift build -c release
209+
210+
merge-test-reports:
211+
needs: [iOS, macOS, watchOS, tvOS]
212+
runs-on: macos-13
213+
steps:
214+
- name: Download artifacts
215+
uses: actions/download-artifact@v4
216+
with:
217+
path: test_output
218+
- run: xcrun xcresulttool merge test_output/**/*.xcresult --output-path test_output/final/final.xcresult
219+
- name: Upload Merged Artifact
220+
uses: actions/upload-artifact@v4
221+
with:
222+
name: MergedResult
223+
path: test_output/final
224+
225+
discover-typos:
226+
name: Discover Typos
227+
runs-on: macOS-13
228+
env:
229+
DEVELOPER_DIR: /Applications/Xcode_14.1.app/Contents/Developer
230+
steps:
231+
- uses: actions/checkout@v4
232+
- name: Discover typos
233+
run: |
234+
export PATH="$PATH:/Library/Frameworks/Python.framework/Versions/3.11/bin"
235+
python3 -m pip install --upgrade pip
236+
python3 -m pip install codespell
237+
codespell --ignore-words-list="hart,inout,msdos,sur" --skip="./.build/*,./.git/*"

.github/workflows/danger.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ jobs:
1515
- name: ruby setup
1616
uses: ruby/setup-ruby@v1
1717
with:
18-
ruby-version: 2.7
18+
ruby-version: 3.1.4
1919
bundler-cache: true
2020
- name: Checkout code
21-
uses: actions/checkout@v2
21+
uses: actions/checkout@v4
2222
- name: Setup gems
2323
run: |
2424
gem install bundler

.swiftlint.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@ excluded:
22
- Tests
33
- Package.swift
44
- Package@swift-5.7.swift
5+
- Package@swift-5.8.swift
6+
- Package@swift-5.9.swift
7+
- Package@swift-5.10.swift
58
- .build
69

710
# Rules
@@ -132,4 +135,4 @@ nesting:
132135
type_name:
133136
max_length:
134137
warning: 40
135-
error: 50
138+
error: 50

Package.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
// swift-tools-version: 5.9
1+
// swift-tools-version: 6.0
22
// The swift-tools-version declares the minimum version of Swift required to build this package.
33

44
import PackageDescription
55

66
let package = Package(
77
name: "Lazy",
88
platforms: [
9-
.iOS(.v11),
9+
.iOS(.v12),
1010
.macOS(.v10_13),
11-
.tvOS(.v11),
11+
.tvOS(.v12),
1212
.watchOS(.v4),
1313
.visionOS(.v1),
1414
],

Package@swift-5.10.swift

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
// swift-tools-version: 5.10
2+
// The swift-tools-version declares the minimum version of Swift required to build this package.
3+
4+
import PackageDescription
5+
6+
let package = Package(
7+
name: "Lazy",
8+
platforms: [
9+
.iOS(.v12),
10+
.macOS(.v10_13),
11+
.tvOS(.v12),
12+
.watchOS(.v4),
13+
.visionOS(.v1),
14+
],
15+
products: [
16+
.library(name: "Lazy", targets: ["Lazy"]),
17+
],
18+
dependencies: [],
19+
targets: [
20+
.target(name: "Lazy", dependencies: []),
21+
.testTarget(name: "LazyTests", dependencies: ["Lazy"]),
22+
]
23+
)

Package@swift-5.7.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ import PackageDescription
66
let package = Package(
77
name: "Lazy",
88
platforms: [
9-
.iOS(.v11),
9+
.iOS(.v12),
1010
.macOS(.v10_13),
11-
.tvOS(.v11),
11+
.tvOS(.v12),
1212
.watchOS(.v4),
1313
],
1414
products: [

Package@swift-5.8.swift

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
// swift-tools-version: 5.8
2+
// The swift-tools-version declares the minimum version of Swift required to build this package.
3+
4+
import PackageDescription
5+
6+
let package = Package(
7+
name: "Lazy",
8+
platforms: [
9+
.iOS(.v12),
10+
.macOS(.v10_13),
11+
.tvOS(.v12),
12+
.watchOS(.v4),
13+
],
14+
products: [
15+
.library(name: "Lazy", targets: ["Lazy"]),
16+
],
17+
dependencies: [],
18+
targets: [
19+
.target(name: "Lazy", dependencies: []),
20+
.testTarget(name: "LazyTests", dependencies: ["Lazy"]),
21+
]
22+
)

Package@swift-5.9.swift

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
// swift-tools-version: 5.9
2+
// The swift-tools-version declares the minimum version of Swift required to build this package.
3+
4+
import PackageDescription
5+
6+
let package = Package(
7+
name: "Lazy",
8+
platforms: [
9+
.iOS(.v12),
10+
.macOS(.v10_13),
11+
.tvOS(.v12),
12+
.watchOS(.v4),
13+
.visionOS(.v1),
14+
],
15+
products: [
16+
.library(name: "Lazy", targets: ["Lazy"]),
17+
],
18+
dependencies: [],
19+
targets: [
20+
.target(name: "Lazy", dependencies: []),
21+
.testTarget(name: "LazyTests", dependencies: ["Lazy"]),
22+
]
23+
)

0 commit comments

Comments
 (0)