88jobs :
99 build-ubuntu :
1010 name : Build on Ubuntu
11- runs-on : ${{ matrix.runs-on }}
11+ runs-on : ubuntu-latest
12+ container : ${{ matrix.swift.nightly && format('swiftlang/swift:nightly-{0}-{1}', matrix.swift.version, matrix.os) || format('swift:{0}-{1}', matrix.swift.version, matrix.os) }}
1213 if : ${{ !contains(github.event.head_commit.message, 'ci skip') }}
1314 strategy :
15+ fail-fast : false
1416 matrix :
15- runs-on : [ubuntu-18.04, ubuntu-20.04, ubuntu-22.04]
16- swift-version : [5.5.2, 5.6.2, 5.7]
17+ os : [noble, jammy]
18+ swift :
19+ - version : " 5.9"
20+ - version : " 5.10"
21+ - version : " 6.0"
22+ - version : " 6.1"
23+ - version : " 6.2"
24+ - version : " 6.1"
25+ nightly : true
26+ - version : " 6.2"
27+ nightly : true
28+ exclude :
29+ - os : noble
30+ swift :
31+ - version : " 5.9"
1732 steps :
1833 - uses : actions/checkout@v4
19- - uses : brightdigit/swift-build@v1.3.3
34+ - uses : brightdigit/swift-build@v1.3.4
2035 with :
21- swift-version : ${{ matrix.swift-version }}
36+ scheme : ${{ env.PACKAGE_NAME }}
2237 - uses : sersoft-gmbh/swift-coverage-action@v4
2338 id : coverage-files
2439 with :
2742 uses : codecov/codecov-action@v4
2843 with :
2944 fail_ci_if_error : true
30- flags : spm,ubuntu -${{ matrix.runs-on }}, ${{ matrix.swift-version }}
45+ flags : swift -${{ matrix.swift.version }}-${{ matrix.os }} ${{ matrix.swift.nightly && '-nightly' || '' }}
3146 verbose : true
3247 token : ${{ secrets.CODECOV_TOKEN }}
3348 files : ${{ join(fromJSON(steps.coverage-files.outputs.files), ',') }}
@@ -39,107 +54,98 @@ jobs:
3954 fail-fast : false
4055 matrix :
4156 include :
42- # SPM Build Matrix
43- - runs-on : macos-11
44- xcode : " /Applications/Xcode_13.2.1.app"
45- - runs-on : macos-12
46- xcode : " /Applications/Xcode_13.3.app"
47- - runs-on : macos-12
48- xcode : " /Applications/Xcode_13.4.1.app"
49- - runs-on : macos-12
50- xcode : " /Applications/Xcode_14.0.1.app"
51- - runs-on : macos-12
52- xcode : " /Applications/Xcode_14.1.app"
57+ # SPM Build Matrix - Xcode 15.x (Swift 5.9-5.10)
58+ - runs-on : macos-15
59+ xcode : " /Applications/Xcode_15.0.1.app"
60+ - runs-on : macos-15
61+ xcode : " /Applications/Xcode_15.2.app"
62+ - runs-on : macos-15
63+ xcode : " /Applications/Xcode_15.4.app"
64+
65+ # SPM Build Matrix - Xcode 16.x+ (Swift 6.x)
66+ - runs-on : macos-15
67+ xcode : " /Applications/Xcode_26.0.app"
68+ - runs-on : macos-15
69+ xcode : " /Applications/Xcode_16.4.app"
70+ - runs-on : macos-15
71+ xcode : " /Applications/Xcode_16.3.app"
5372
54- # iOS Build Matrix
73+ # iOS Build Matrix - Xcode 15.x (Swift 5.9-5.10)
5574 - type : ios
56- runs-on : macos-11
57- xcode : " /Applications/Xcode_13.2.1 .app"
58- deviceName : " iPhone 13 "
59- osVersion : " 15.2 "
75+ runs-on : macos-15
76+ xcode : " /Applications/Xcode_15.4 .app"
77+ deviceName : " iPhone 15 "
78+ osVersion : " 17.5 "
6079
80+ # iOS Build Matrix - Xcode 16.x+ (Swift 6.x)
6181 - type : ios
62- runs-on : macos-12
63- xcode : " /Applications/Xcode_13.3.app"
64- deviceName : " iPhone 13"
65- osVersion : " 15.4"
82+ runs-on : macos-15
83+ xcode : " /Applications/Xcode_26.0.app"
84+ deviceName : " iPhone 17 Pro"
85+ osVersion : " 26.0"
86+ download-platform : true
6687
6788 - type : ios
68- runs-on : macos-12
69- xcode : " /Applications/Xcode_13.4.1 .app"
70- deviceName : " iPhone 13 "
71- osVersion : " 15 .5"
89+ runs-on : macos-15
90+ xcode : " /Applications/Xcode_16.4 .app"
91+ deviceName : " iPhone 16e "
92+ osVersion : " 18 .5"
7293
7394 - type : ios
74- runs-on : macos-12
75- xcode : " /Applications/Xcode_14.0.1.app"
76- deviceName : " iPhone 14"
77- osVersion : " 16.0"
78-
79- - type : ios
80- runs-on : macos-12
81- xcode : " /Applications/Xcode_14.1.app"
82- deviceName : " iPhone 14"
83- osVersion : " 16.1"
84-
85- # watchOS Build Matrix
86- - type : watchos
87- runs-on : macos-11
88- xcode : " /Applications/Xcode_13.2.1.app"
89- deviceName : " Apple Watch Series 7 - 41mm"
90- osVersion : " 8.3"
95+ runs-on : macos-15
96+ xcode : " /Applications/Xcode_16.3.app"
97+ deviceName : " iPhone 16"
98+ osVersion : " 18.4"
9199
100+ # watchOS Build Matrix - Xcode 15.x (Swift 5.9-5.10)
92101 - type : watchos
93- runs-on : macos-12
94- xcode : " /Applications/Xcode_13.3 .app"
95- deviceName : " Apple Watch Series 7 - 41mm "
96- osVersion : " 8 .5"
102+ runs-on : macos-15
103+ xcode : " /Applications/Xcode_15.4 .app"
104+ deviceName : " Apple Watch Series 9 (45mm) "
105+ osVersion : " 10 .5"
97106
107+ # watchOS Build Matrix - Xcode 16.x+ (Swift 6.x)
98108 - type : watchos
99- runs-on : macos-12
100- xcode : " /Applications/Xcode_13.4.1.app"
101- deviceName : " Apple Watch Series 7 - 41mm"
102- osVersion : " 8.5"
109+ runs-on : macos-15
110+ xcode : " /Applications/Xcode_26.0.app"
111+ deviceName : " Apple Watch Ultra 3 (49mm)"
112+ osVersion : " 26.0"
113+ download-platform : true
103114
104115 - type : watchos
105- runs-on : macos-12
106- xcode : " /Applications/Xcode_14.0.1 .app"
107- deviceName : " Apple Watch Series 8 (41mm )"
108- osVersion : " 9.0 "
116+ runs-on : macos-15
117+ xcode : " /Applications/Xcode_16.4 .app"
118+ deviceName : " Apple Watch Series 10 (46mm )"
119+ osVersion : " 11.5 "
109120
110121 - type : watchos
111- runs-on : macos-12
112- xcode : " /Applications/Xcode_14.1 .app"
113- deviceName : " Apple Watch Ultra (49mm )"
114- osVersion : " 9.1 "
122+ runs-on : macos-15
123+ xcode : " /Applications/Xcode_16.3 .app"
124+ deviceName : " Apple Watch Series 10 (42mm )"
125+ osVersion : " 11.4 "
115126
116127 steps :
117128 - uses : actions/checkout@v4
118129
119130 - name : Build and Test
120- uses : brightdigit/swift-build@v1.3.3
131+ uses : brightdigit/swift-build@v1.3.4
121132 with :
122133 scheme : ${{ env.PACKAGE_NAME }}
123134 type : ${{ matrix.type }}
124135 xcode : ${{ matrix.xcode }}
125136 deviceName : ${{ matrix.deviceName }}
126137 osVersion : ${{ matrix.osVersion }}
138+ download-platform : ${{ matrix.download-platform }}
127139
128140 # Coverage Steps
129141 - name : Process Coverage
130142 uses : sersoft-gmbh/swift-coverage-action@v4
131- id : coverage-files
132- with :
133- fail-on-empty-output : true
134143
135144 - name : Upload Coverage
136145 uses : codecov/codecov-action@v4
137146 with :
138147 token : ${{ secrets.CODECOV_TOKEN }}
139- flags : ${{ matrix.type && format('{0}-{1}', matrix.type, matrix.osVersion) || 'spm' }}
140- verbose : true
141- fail_ci_if_error : true
142- files : ${{ join(fromJSON(steps.coverage-files.outputs.files), ',') }}
148+ flags : ${{ matrix.type && format('{0}{1}', matrix.type, matrix.osVersion) || 'spm' }}
143149
144150 lint :
145151 name : Linting
0 commit comments