Skip to content

Commit 84b25db

Browse files
authored
chore(ci): update workflow to run tests and build project (#18)
* chore(ci): update workflow to run tests and build project * chore: update danger.yml * chore: add `sortImports` and `sortSwitchCases` rules * chore: bump the macos version
1 parent 7eb588c commit 84b25db

File tree

3 files changed

+66
-188
lines changed

3 files changed

+66
-188
lines changed

.github/workflows/ci.yml

Lines changed: 54 additions & 182 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ on:
44
push:
55
branches:
66
- main
7-
- dev
87
pull_request:
98
paths:
109
- '.swiftlint.yml'
@@ -13,18 +12,18 @@ on:
1312
- "Source/**"
1413
- "Tests/**"
1514

15+
permissions:
16+
contents: read
17+
18+
concurrency:
19+
group: atomic-${{ github.head_ref }}
20+
cancel-in-progress: true
21+
22+
env:
23+
SCHEME_NAME: "Atomic"
24+
1625
jobs:
17-
SwiftLint:
18-
runs-on: ubuntu-latest
19-
steps:
20-
- uses: actions/checkout@v3
21-
- name: GitHub Action for SwiftLint
22-
uses: norio-nomura/action-swiftlint@3.2.1
23-
with:
24-
args: --strict
25-
env:
26-
DIFF_BASE: ${{ github.base_ref }}
27-
macOS:
26+
test-apple-platforms:
2827
name: ${{ matrix.name }}
2928
runs-on: ${{ matrix.runsOn }}
3029
env:
@@ -34,153 +33,45 @@ jobs:
3433
fail-fast: false
3534
matrix:
3635
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 "Atomic" -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: Atomic
57-
filename: ${{ matrix.name }}
58-
token: ${{ secrets.CODECOV_TOKEN }}
36+
# macOS
37+
- { platform: macOS, name: "macOS 26, Xcode 26.0, Swift 6.2.0", xcode: "Xcode_26.0.1", runsOn: macOS-26, destination: "platform=macOS" }
38+
- { platform: macOS, name: "macOS 14, Xcode 16.1, Swift 6.0.2", xcode: "Xcode_16.1", runsOn: macOS-14, destination: "platform=macOS" }
39+
- { platform: macOS, name: "macOS 14, Xcode 15.4, Swift 5.10", xcode: "Xcode_15.4", runsOn: macOS-14, destination: "platform=macOS" }
5940

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 "Atomic" -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: Atomic
98-
filename: ${{ matrix.name }}
99-
token: ${{ secrets.CODECOV_TOKEN }}
41+
# iOS
42+
- { platform: iOS, name: "iOS 26.0, Xcode 26.0, Swift 6.2.0", xcode: "Xcode_26.0.1", runsOn: macOS-26, destination: "OS=26.0.1,name=iPhone 17 Pro" }
43+
- { platform: iOS, name: "iOS 18.1", xcode: "Xcode_16.1", runsOn: macOS-14, destination: "OS=18.1,name=iPhone 16 Pro" }
44+
- { platform: iOS, name: "iOS 17.4", xcode: "Xcode_15.3", runsOn: macOS-14, destination: "OS=17.4,name=iPhone 15 Pro" }
10045

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 "Atomic" -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: Atomic
139-
filename: ${{ matrix.name }}
140-
token: ${{ secrets.CODECOV_TOKEN }}
46+
# tvOS
47+
- { platform: tvOS, name: "tvOS 26.0", xcode: "Xcode_26.0.1", runsOn: macOS-26, destination: "OS=26.0,name=Apple TV" }
48+
- { platform: tvOS, name: "tvOS 18.1", xcode: "Xcode_16.1", runsOn: macOS-14, destination: "OS=18.1,name=Apple TV" }
49+
- { platform: tvOS, name: "tvOS 17.4", xcode: "Xcode_15.3", runsOn: macOS-14, destination: "OS=17.4,name=Apple TV" }
14150

142-
watchOS:
143-
name: ${{ matrix.name }}
144-
runs-on: ${{ matrix.runsOn }}
145-
env:
146-
DEVELOPER_DIR: "/Applications/${{ matrix.xcode }}.app/Contents/Developer"
147-
timeout-minutes: 20
148-
strategy:
149-
fail-fast: false
150-
matrix:
151-
include:
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
51+
# watchOS
52+
- { platform: watchOS, name: "watchOS 26.0", xcode: "Xcode_26.0.1", runsOn: macOS-26, destination: "OS=26.0,name=Apple Watch Ultra 3 (49mm)" }
53+
- { platform: watchOS, name: "watchOS 11.1", xcode: "Xcode_16.1", runsOn: macOS-14, destination: "OS=11.1,name=Apple Watch Series 10 (46mm)" }
54+
- { platform: watchOS, name: "watchOS 10.5", xcode: "Xcode_15.3", runsOn: macOS-14, destination: "OS=10.5,name=Apple Watch Series 9 (45mm)" }
55+
- { platform: watchOS, name: "watchOS 10.4", xcode: "Xcode_15.3", runsOn: macOS-14, destination: "OS=10.4,name=Apple Watch Series 9 (45mm)" }
17256
steps:
173-
- uses: actions/checkout@v3
174-
- name: ${{ matrix.name }}
175-
run: xcodebuild test -scheme "Atomic" -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1
176-
- name: Upload test coverage reports to Codecov
57+
- name: Checkout code
58+
uses: actions/checkout@v3
59+
- name: Run tests - ${{ matrix.name }}
60+
run: |
61+
xcodebuild test \
62+
-scheme "${{ env.SCHEME_NAME }}" \
63+
-destination "${{ matrix.destination }}" \
64+
-enableCodeCoverage YES \
65+
-resultBundlePath "test_output/${{ matrix.name }}.xcresult" \
66+
clean || exit 1
67+
- name: Upload test coverage to Codecov
17768
uses: space-code/oss-common-actions/.github/actions/upload_test_coverage_report@main
17869
with:
179-
scheme_name: Atomic
70+
scheme_name: ${{ env.SCHEME_NAME }}
18071
filename: ${{ matrix.name }}
18172
token: ${{ secrets.CODECOV_TOKEN }}
18273

183-
spm:
74+
spm-build:
18475
name: ${{ matrix.name }}
18576
runs-on: ${{ matrix.runsOn }}
18677
env:
@@ -190,48 +81,29 @@ jobs:
19081
fail-fast: false
19182
matrix:
19283
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
84+
- { name: "macOS 26, SPM 6.2.0", xcode: "Xcode_26.0.1", runsOn: macOS-26 }
85+
- { name: "macOS 15, SPM 6.0.2", xcode: "Xcode_16.0", runsOn: macOS-15 }
86+
- { name: "macOS 14, SPM 6.0.2", xcode: "Xcode_16.1", runsOn: macOS-14 }
87+
- { name: "macOS 14, SPM 5.10.0", xcode: "Xcode_15.3", runsOn: macOS-14 }
20588
steps:
206-
- uses: actions/checkout@v3
207-
- name: ${{ matrix.name }}
89+
- name: Checkout code
90+
uses: actions/checkout@v3
91+
- name: Build with Swift Package Manager - ${{ matrix.name }}
20892
run: swift build -c release
20993

21094
merge-test-reports:
211-
needs: [iOS, macOS, watchOS, tvOS]
212-
runs-on: macos-13
95+
needs: test-apple-platforms
96+
runs-on: macos-15
21397
steps:
21498
- name: Download artifacts
21599
uses: actions/download-artifact@v4
216100
with:
217101
path: test_output
102+
218103
- run: xcrun xcresulttool merge test_output/**/*.xcresult --output-path test_output/final/final.xcresult
219-
- name: Upload Merged Artifact
104+
105+
- name: Upload merged test results
220106
uses: actions/upload-artifact@v4
221107
with:
222108
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@v2
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/*"
109+
path: test_output/final

.github/workflows/danger.yml

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Danger
1+
name: danger
22

33
on:
44
pull_request:
@@ -8,21 +8,27 @@ env:
88
LC_CTYPE: en_US.UTF-8
99
LANG: en_US.UTF-8
1010

11+
permissions:
12+
contents: read
13+
pull-requests: write
14+
1115
jobs:
1216
run-danger:
1317
runs-on: ubuntu-latest
1418
steps:
1519
- name: ruby setup
1620
uses: ruby/setup-ruby@v1
1721
with:
18-
ruby-version: 3.1.4
22+
ruby-version: 3.4.8
1923
bundler-cache: true
2024
- name: Checkout code
21-
uses: actions/checkout@v2
25+
uses: actions/checkout@v6
2226
- name: Setup gems
2327
run: |
2428
gem install bundler
25-
bundle install --clean --path vendor/bundle
29+
bundle config set clean true
30+
bundle config set path 'vendor/bundle'
31+
bundle install
2632
- name: danger
2733
env:
2834
DANGER_GITHUB_API_TOKEN: ${{ secrets.DANGER_GITHUB_API_TOKEN }}

.swiftformat

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@
3636
--enable redundantSelf
3737
--enable redundantVoidReturnType
3838
--enable semicolons
39-
--enable sortedImports
40-
--enable sortedSwitchCases
39+
--enable sortImports
40+
--enable sortSwitchCases
4141
--enable spaceAroundBraces
4242
--enable spaceAroundBrackets
4343
--enable spaceAroundComments

0 commit comments

Comments
 (0)