-
Notifications
You must be signed in to change notification settings - Fork 0
executable file
·138 lines (131 loc) · 4.68 KB
/
ci.yml
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
name: "AdvancedOperation CI"
on:
schedule:
- cron: '0 0 * * 2' # Run every Tuesday
push:
branches:
- main
- develop
pull_request:
branches:
- main
- develop
concurrency:
group: ${{ github.ref }}
cancel-in-progress: true
jobs:
info:
name: Show macOS and Xcode versions
runs-on: macos-15
env:
DEVELOPER_DIR: /Applications/Xcode_16.app/Contents/Developer
steps:
- name: stats
run: |
sw_vers
xcodebuild -version
xcodebuild -showsdks
xcrun simctl list
brew -v
brew info swiftlint
macOS:
name: Test macOS
runs-on: macos-15
env:
DEVELOPER_DIR: /Applications/Xcode_16.app/Contents/Developer
steps:
- uses: actions/checkout@v4
- name: macOS
run: set -o pipefail && env NSUnbufferedIO=YES xcodebuild -project "AdvancedOperation.xcodeproj" -scheme "AdvancedOperation" -destination "platform=macOS" clean test -quiet -resultBundlePath '~/Downloads/Report/report.xcresult'
iOS:
name: Test iOS
runs-on: macos-15
env:
DEVELOPER_DIR: /Applications/Xcode_16.app/Contents/Developer
strategy:
matrix:
destination: ["OS=18.0,name=iPhone 16 Pro"]
steps:
- uses: actions/checkout@v4
- name: iOS - ${{ matrix.destination }}
run: set -o pipefail && env NSUnbufferedIO=YES xcodebuild -project "AdvancedOperation.xcodeproj" -scheme "AdvancedOperation" -destination "${{ matrix.destination }}" clean test -quiet -resultBundlePath '~/Downloads/Report/report.xcresult'
- name: Upload tests report
if: ${{ always() }} # to run it only if the previous step fails use ${{ failure() }}
uses: actions/upload-artifact@v4
with:
name: iOS tests report
path: ~/Downloads/Report
visionOS:
name: Test visionOS
runs-on: macos-15
env:
DEVELOPER_DIR: /Applications/Xcode_16.app/Contents/Developer
strategy:
matrix:
destination: ["OS=2.0,name=Apple Vision Pro"]
steps:
- uses: actions/checkout@v4
- name: visionOS - ${{ matrix.destination }}
run: set -o pipefail && env NSUnbufferedIO=YES xcodebuild -project "AdvancedOperation.xcodeproj" -scheme "AdvancedOperation" -destination "${{ matrix.destination }}" clean test -quiet -resultBundlePath '~/Downloads/Report/report.xcresult'
- name: Upload tests report
if: ${{ always() }} # to run it only if the previous step fails use ${{ failure() }}
uses: actions/upload-artifact@v4
with:
name: visionOS tests report
path: ~/Downloads/Report
tvOS:
name: Test tvOS
runs-on: macos-15
env:
DEVELOPER_DIR: /Applications/Xcode_16.app/Contents/Developer
strategy:
matrix:
destination: ["OS=18.0,name=Apple TV"]
steps:
- uses: actions/checkout@v4
- name: tvOS - ${{ matrix.destination }}
run: set -o pipefail && env NSUnbufferedIO=YES xcodebuild -project "AdvancedOperation.xcodeproj" -scheme "AdvancedOperation" -destination "${{ matrix.destination }}" clean test -quiet -resultBundlePath '~/Downloads/Report/report.xcresult'
- name: Upload tests report
if: ${{ always() }} # to run it only if the previous step fails use ${{ failure() }}
uses: actions/upload-artifact@v4
with:
name: tvOS tests report
path: ~/Downloads/Report
watchOS:
name: Test watchOS
runs-on: macos-15
env:
DEVELOPER_DIR: /Applications/Xcode_16.app/Contents/Developer
strategy:
matrix:
destination: ["OS=11.0,name=Apple Watch Series 10 (46mm)"]
steps:
- uses: actions/checkout@v4
- name: watchOS - ${{ matrix.destination }}
run: set -o pipefail && env NSUnbufferedIO=YES xcodebuild -project "AdvancedOperation.xcodeproj" -scheme "AdvancedOperation" -destination "${{ matrix.destination }}" clean test -quiet -resultBundlePath '~/Downloads/Report/report.xcresult'
- name: Upload tests report
if: ${{ always() }} # to run it only if the previous step fails use ${{ failure() }}
uses: actions/upload-artifact@v4
with:
name: watchOS tests report
path: ~/Downloads/Report
SPM:
name: Test SPM Integration
runs-on: macos-15
env:
DEVELOPER_DIR: /Applications/Xcode_16.app/Contents/Developer
steps:
- uses: actions/checkout@v4
- name: SPM Test
run: |
swift --version
swift test
# lint:
# name: Swift Lint
# runs-on: macos-15
# steps:
# - uses: actions/checkout@v4
# - name: Run SwiftLint
# run: |
# swift --version
# swiftlint --reporter github-actions-logging