Skip to content

Commit 76d95c7

Browse files
committed
Update GitHub Action Confguration (#7)
* Update GitHub Action Confguration - Implement testing on different platforms - Implement typo checking * Update GitHub Action Confguration * Fix typos
1 parent 043a8d9 commit 76d95c7

3 files changed

Lines changed: 169 additions & 33 deletions

File tree

.github/workflows/ci.yml

Lines changed: 164 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,10 @@ on:
88
pull_request:
99
paths:
1010
- '.swiftlint.yml'
11-
branches:
12-
- main
13-
- dev
14-
15-
concurrency:
16-
group: ci
17-
cancel-in-progress: true
11+
- ".github/workflows/**"
12+
- "Package.swift"
13+
- "Source/**"
14+
- "Tests/**"
1815

1916
jobs:
2017
SwiftLint:
@@ -27,39 +24,176 @@ jobs:
2724
args: --strict
2825
env:
2926
DIFF_BASE: ${{ github.base_ref }}
30-
Latest:
31-
name: Test Latest (iOS, macOS, tvOS, watchOS)
32-
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_15.0"
38+
runsOn: macos-13
39+
name: "macOS 13, Xcode 15.0, Swift 5.9.0"
40+
- xcode: "Xcode_14.3.1"
41+
runsOn: macos-13
42+
name: "macOS 13, Xcode 14.3.1, Swift 5.8.0"
43+
steps:
44+
- uses: actions/checkout@v3
45+
- name: ${{ matrix.name }}
46+
run: xcodebuild test -scheme "Validator-Package" -destination "platform=macOS" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1
47+
- name: Upload coverage reports to Codecov
48+
uses: codecov/codecov-action@v3.1.0
49+
with:
50+
token: ${{ secrets.CODECOV_TOKEN }}
51+
xcode: true
52+
xcode_archive_path: test_output/${{ matrix.name }}.xcresult
53+
- uses: actions/upload-artifact@v4
54+
with:
55+
name: ${{ matrix.name }}
56+
path: test_output
57+
58+
iOS:
59+
name: ${{ matrix.name }}
60+
runs-on: ${{ matrix.runsOn }}
61+
env:
62+
DEVELOPER_DIR: "/Applications/${{ matrix.xcode }}.app/Contents/Developer"
63+
timeout-minutes: 20
64+
strategy:
65+
fail-fast: false
66+
matrix:
67+
include:
68+
- destination: "OS=17.0.1,name=iPhone 14 Pro"
69+
name: "iOS 17.0.1"
70+
xcode: "Xcode_15.0"
71+
runsOn: macos-13
72+
- destination: "OS=16.4,name=iPhone 14 Pro"
73+
name: "iOS 16.4"
74+
xcode: "Xcode_14.3.1"
75+
runsOn: macos-13
76+
steps:
77+
- uses: actions/checkout@v3
78+
- name: ${{ matrix.name }}
79+
run: xcodebuild test -scheme "Validator-Package" -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1
80+
- uses: actions/upload-artifact@v4
81+
with:
82+
name: ${{ matrix.name }}
83+
path: test_output
84+
85+
tvOS:
86+
name: ${{ matrix.name }}
87+
runs-on: ${{ matrix.runsOn }}
3388
env:
34-
DEVELOPER_DIR: "/Applications/Xcode_14.1.app/Contents/Developer"
35-
timeout-minutes: 10
89+
DEVELOPER_DIR: "/Applications/${{ matrix.xcode }}.app/Contents/Developer"
90+
timeout-minutes: 20
3691
strategy:
3792
fail-fast: false
3893
matrix:
3994
include:
40-
- destination: "OS=16.1,name=iPhone 14 Pro"
41-
name: "iOS"
42-
scheme: "Validator-Package"
43-
sdk: iphonesimulator
44-
- destination: "OS=16.1,name=Apple TV"
45-
name: "tvOS"
46-
scheme: "Validator-Package"
47-
sdk: appletvsimulator
48-
- destination: "OS=9.1,name=Apple Watch Series 8 (45mm)"
49-
name: "watchOS"
50-
scheme: "Validator-Package"
51-
sdk: watchsimulator
52-
- destination: "platform=macOS"
53-
name: "macOS"
54-
scheme: "Validator-Package"
55-
sdk: macosx
95+
- destination: "OS=17.0,name=Apple TV"
96+
name: "tvOS 17.0"
97+
xcode: "Xcode_15.0"
98+
runsOn: macos-13
99+
- destination: "OS=16.4,name=Apple TV"
100+
name: "tvOS 16.4"
101+
xcode: "Xcode_14.3.1"
102+
runsOn: macos-13
56103
steps:
57104
- uses: actions/checkout@v3
58105
- name: ${{ matrix.name }}
59-
run: xcodebuild test -scheme "${{ matrix.scheme }}" -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES -resultBundlePath "./${{ matrix.sdk }}.xcresult" | xcpretty -r junit
106+
run: xcodebuild test -scheme "Validator-Package" -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1
60107
- name: Upload coverage reports to Codecov
61108
uses: codecov/codecov-action@v3.1.0
62109
with:
63110
token: ${{ secrets.CODECOV_TOKEN }}
64111
xcode: true
65-
xcode_archive_path: "./${{ matrix.sdk }}.xcresult"
112+
xcode_archive_path: test_output/${{ matrix.name }}.xcresult
113+
- uses: actions/upload-artifact@v4
114+
with:
115+
name: ${{ matrix.name }}
116+
path: test_output
117+
118+
watchOS:
119+
name: ${{ matrix.name }}
120+
runs-on: ${{ matrix.runsOn }}
121+
env:
122+
DEVELOPER_DIR: "/Applications/${{ matrix.xcode }}.app/Contents/Developer"
123+
timeout-minutes: 20
124+
strategy:
125+
fail-fast: false
126+
matrix:
127+
include:
128+
- destination: "OS=10.0,name=Apple Watch Series 9 (45mm)"
129+
name: "watchOS 10.0"
130+
xcode: "Xcode_15.0"
131+
runsOn: macos-13
132+
- destination: "OS=9.4,name=Apple Watch Series 8 (45mm)"
133+
name: "watchOS 9.4"
134+
xcode: "Xcode_14.3.1"
135+
runsOn: macos-13
136+
steps:
137+
- uses: actions/checkout@v3
138+
- name: ${{ matrix.name }}
139+
run: xcodebuild test -scheme "Validator-Package" -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1
140+
- name: Upload coverage reports to Codecov
141+
uses: codecov/codecov-action@v3.1.0
142+
with:
143+
token: ${{ secrets.CODECOV_TOKEN }}
144+
xcode: true
145+
xcode_archive_path: test_output/${{ matrix.name }}.xcresult
146+
- uses: actions/upload-artifact@v4
147+
with:
148+
name: ${{ matrix.name }}
149+
path: test_output
150+
151+
spm:
152+
name: ${{ matrix.name }}
153+
runs-on: ${{ matrix.runsOn }}
154+
env:
155+
DEVELOPER_DIR: "/Applications/${{ matrix.xcode }}.app/Contents/Developer"
156+
timeout-minutes: 20
157+
strategy:
158+
fail-fast: false
159+
matrix:
160+
include:
161+
- name: "Xcode 15"
162+
xcode: "Xcode_15.0"
163+
runsOn: macos-13
164+
- name: "Xcode 14"
165+
xcode: "Xcode_14.3.1"
166+
runsOn: macos-13
167+
steps:
168+
- uses: actions/checkout@v3
169+
- name: ${{ matrix.name }}
170+
run: swift build -c release
171+
172+
merge-test-reports:
173+
needs: [iOS, macOS, watchOS, tvOS]
174+
runs-on: macos-13
175+
steps:
176+
- name: Download artifacts
177+
uses: actions/download-artifact@v4
178+
with:
179+
path: test_output
180+
- run: xcrun xcresulttool merge test_output/**/*.xcresult --output-path test_output/final/final.xcresult
181+
- name: Upload Merged Artifact
182+
uses: actions/upload-artifact@v4
183+
with:
184+
name: MergedResult
185+
path: test_output/final
186+
187+
discover-typos:
188+
name: Discover Typos
189+
runs-on: macOS-12
190+
env:
191+
DEVELOPER_DIR: /Applications/Xcode_14.1.app/Contents/Developer
192+
steps:
193+
- uses: actions/checkout@v2
194+
- name: Discover typos
195+
run: |
196+
export PATH="$PATH:/Library/Frameworks/Python.framework/Versions/3.11/bin"
197+
python3 -m pip install --upgrade pip
198+
python3 -m pip install codespell
199+
codespell --ignore-words-list="hart,inout,msdos,sur" --skip="./.build/*,./.git/*"

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
All notable changes to this project will be documented in this file.
33

44
## [Unreleased]
5+
- Update GitHub Action Configuration
6+
- Added in Pull Request [#7](https://github.com/space-code/validator/pull/7).
57
- Add `Swift Compatibility` & `Platform Compatibility` badges
68
- Added in Pull Request [#6](https://github.com/space-code/validator/pull/6).
79

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<h1 align="center" style="margin-top: 0px;">validator</h1>
44

55
<p align="center">
6-
<a href="https://github.com/space-code/validator/blob/main/LICENSE"><img alt="Liscence" src="https://img.shields.io/cocoapods/l/service-core.svg?style=flat"></a>
6+
<a href="https://github.com/space-code/validator/blob/main/LICENSE"><img alt="Licence" src="https://img.shields.io/cocoapods/l/service-core.svg?style=flat"></a>
77
<a href="https://swiftpackageindex.com/space-code/validator"><img alt="Swift Compatibility" src="https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2Fspace-code%2Fvalidator%2Fbadge%3Ftype%3Dswift-versions"/></a>
88
<a href="https://swiftpackageindex.com/space-code/validator"><img alt="Platform Compatibility" src="https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2Fspace-code%2Fvalidator%2Fbadge%3Ftype%3Dplatforms"/></a>
99
<a href="https://github.com/space-code/validator"><img alt="CI" src="https://github.com/space-code/validator/actions/workflows/ci.yml/badge.svg?branch=main"></a>
@@ -69,7 +69,7 @@ class ViewController: UIViewController {
6969
textField.add(rule: LengthValidationRule(max: 10, error: "error text"))
7070
/// Enables automatic validation on input change.
7171
textField.validateOnInputChange(isEnabled: true)
72-
/// Handels validation result.
72+
/// Handle the validation result.
7373
textField.validationHandler = { result in
7474
switch result {
7575
case .valid:
@@ -182,7 +182,7 @@ struct ContentView: View {
182182
if value {
183183
print("The form's fields are valid")
184184
} else {
185-
print("The form's fileds aren't valid")
185+
print("The form's fields aren't valid")
186186
}
187187
}
188188
)

0 commit comments

Comments
 (0)