-
Notifications
You must be signed in to change notification settings - Fork 0
150 lines (131 loc) · 4.99 KB
/
VerifyChanges.yaml
File metadata and controls
150 lines (131 loc) · 4.99 KB
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
139
140
141
142
143
144
145
146
147
148
149
150
name: Verify Changes
on:
merge_group:
pull_request:
branches: "**"
push:
branches: ["main"]
env:
XCODE_VERSION: 26.3
jobs:
lint:
name: Lint
runs-on: macos-26
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Select Xcode ${{ env.XCODE_VERSION }}
run: sudo xcode-select -s /Applications/Xcode_"$XCODE_VERSION".app
- name: Lint
run: Scripts/lint
build-and-test:
name: Build and Test (${{ matrix.platform }})
needs: lint
runs-on: macos-26
strategy:
fail-fast: false
matrix:
include:
- platform: iOS
xcode_destination: "platform=iOS Simulator,name=iPhone 17 Pro"
- platform: macOS
xcode_destination: "platform=macOS,arch=arm64"
- platform: tvOS
xcode_destination: "platform=tvOS Simulator,name=Apple TV 4K (3rd generation)"
- platform: watchOS
xcode_destination: "platform=watchOS Simulator,name=Apple Watch Series 11 (46mm)"
env:
DEV_BUILDS: DevBuilds/Sources
OTHER_XCBEAUTIFY_FLAGS: --renderer github-actions
XCCOV_PRETTY_VERSION: 1.2.0
XCODE_SCHEME: DevKeychain
XCODE_DESTINATION: ${{ matrix.xcode_destination }}
XCODE_TEST_PRODUCTS_PATH: .build/DevKeychain.xctestproducts
steps:
- name: Select Xcode ${{ env.XCODE_VERSION }}
run: sudo xcode-select -s /Applications/Xcode_"$XCODE_VERSION".app
- name: Checkout
uses: actions/checkout@v6
- name: Checkout DevBuilds
uses: actions/checkout@v6
with:
repository: DevKitOrganization/DevBuilds
path: DevBuilds
- name: Restore XCTestProducts
if: github.event_name != 'push'
id: cache-xctestproducts-restore
uses: actions/cache/restore@v5
with:
path: ${{ env.XCODE_TEST_PRODUCTS_PATH }}
key: cache-xctestproducts-${{ github.workflow }}-${{ matrix.platform }}-${{ github.sha }}
- uses: irgaly/xcode-cache@v1
if: steps.cache-xctestproducts-restore.outputs.cache-hit != 'true'
with:
key: xcode-cache-deriveddata-${{ env.XCODE_VERSION }}-${{ github.workflow }}-${{ matrix.platform }}-${{ github.sha }}
restore-keys: |
xcode-cache-deriveddata-${{ env.XCODE_VERSION }}-${{ github.workflow }}-${{ matrix.platform }}-
xcode-cache-deriveddata-${{ env.XCODE_VERSION }}
deriveddata-directory: .build/DerivedData
sourcepackages-directory: .build/DerivedData/SourcePackages
swiftpm-package-resolved-file: Package.resolved
- name: Build for Testing
id: build-for-testing
if: steps.cache-xctestproducts-restore.outputs.cache-hit != 'true'
run: ${{ env.DEV_BUILDS }}/build_and_test.sh --action build-for-testing
- name: Test Without Building
id: test-without-building
if: github.event_name != 'push'
run: ${{ env.DEV_BUILDS }}/build_and_test.sh --action test-without-building
- name: Save XCTestProducts
if: (cancelled() || failure()) && steps.cache-xctestproducts-restore.outputs.cache-hit != 'true'
uses: actions/cache/save@v5
with:
path: ${{ env.XCODE_TEST_PRODUCTS_PATH }}
key: ${{ steps.cache-xctestproducts-restore.outputs.cache-primary-key }}
- name: Log Code Coverage
if: github.event_name != 'push'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release download ${{ env.XCCOV_PRETTY_VERSION }} \
--repo DevKitOrganization/xccovPretty \
--pattern "xccovPretty-macos.tar.gz" \
-O - \
| tar -xz
chmod +x xccovPretty
xcrun xccov view --report .build/${XCODE_SCHEME}_test-without-building.xcresult --json \
| ./xccovPretty --github-comment \
> .build/xccovPretty-${{ matrix.platform }}.output
- name: Upload Logs and XCResults
if: success() || failure()
uses: actions/upload-artifact@v7
with:
name: Logs_and_XCResults-${{ matrix.platform }}
path: |
.build/*.log
.build/*.xcresult
include-hidden-files: true
- name: Upload xccovPretty output
if: github.event_name != 'push'
uses: actions/upload-artifact@v7
with:
name: xccovPrettyOutput-${{ matrix.platform }}
path: .build/xccovPretty-${{ matrix.platform }}.output
include-hidden-files: true
post-pr-comments:
name: Post PR Comments
needs: build-and-test
if: ${{ github.event_name == 'pull_request' }}
permissions:
pull-requests: write
runs-on: ubuntu-latest
steps:
- name: Download xccovPretty output
uses: actions/download-artifact@v8
with:
name: xccovPrettyOutput-macOS
- name: Post Code Coverage Comment
uses: thollander/actions-comment-pull-request@v3
with:
file-path: xccovPretty-macOS.output
comment-tag: codeCoverage-macOS