-
Notifications
You must be signed in to change notification settings - Fork 349
134 lines (118 loc) · 3.94 KB
/
ios.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
---
name: iOS app
on:
pull_request:
paths:
- .github/workflows/ios.yml
- ios/build-rust-library.sh
- ios/.swiftformat
- ios/**/*.swift
- ios/**/*.xctestplan
workflow_dispatch:
permissions: {}
jobs:
check-formatting:
name: Check formatting
runs-on: macos-13
steps:
- name: Install SwiftFormat
run: |
brew update
brew upgrade swiftformat
- name: Checkout repository
uses: actions/checkout@v4
- name: Check formatting
run: |
swiftformat --version
swiftformat --lint .
working-directory: ios
swiftlint:
name: Run swiftlint
runs-on: macos-13
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run swiftlint
run: |
brew install swiftlint
swiftlint --version
swiftlint --reporter github-actions-logging
working-directory: ios
test:
name: Unit tests
runs-on: macos-13-xlarge
env:
SOURCE_PACKAGES_PATH: .spm
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Configure cache
uses: actions/cache@v3
with:
path: ios/${{ env.SOURCE_PACKAGES_PATH }}
key: ${{ runner.os }}-spm-${{ hashFiles('ios/**/Package.resolved') }}
restore-keys: |
${{ runner.os }}-spm-
- name: Setup go-lang
uses: actions/setup-go@v3
with:
go-version: 1.21.13
- name: Install xcbeautify
run: |
brew update
brew install xcbeautify
- name: Install protobuf
run: |
brew update
brew install protobuf
- name: Set up yeetd to workaround XCode being slow in CI
run: |
wget https://github.com/biscuitehh/yeetd/releases/download/1.0/yeetd-normal.pkg
sudo installer -pkg yeetd-normal.pkg -target /
yeetd &
- name: Configure Xcode
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: '15.0.1'
- name: Configure Rust
# Since the https://github.com/actions/runner-images/releases/tag/macos-13-arm64%2F20240721.1 release
# Brew does not install tools at the correct location anymore
# This update broke the rust build script which was assuming the cargo binary was located in ~/.cargo/bin/cargo
# The workaround is to fix brew paths by running brew bundle dump, and then brew bundle
# WARNING: This has to be the last brew "upgrade" commands that is ran,
# otherwise the brew path will be broken again.
run: |
brew bundle dump
brew bundle
rustup default stable
rustup update stable
rustup target add aarch64-apple-ios-sim
- name: Configure Xcode project
run: |
cp Base.xcconfig.template Base.xcconfig
cp App.xcconfig.template App.xcconfig
cp PacketTunnel.xcconfig.template PacketTunnel.xcconfig
cp Screenshots.xcconfig.template Screenshots.xcconfig
cp Api.xcconfig.template Api.xcconfig
working-directory: ios/Configurations
- name: Run unit tests
run: |
set -o pipefail && env NSUnbufferedIO=YES xcodebuild \
-project MullvadVPN.xcodeproj \
-scheme MullvadVPN \
-testPlan MullvadVPNCI \
-destination "platform=iOS Simulator,name=iPhone 15" \
-clonedSourcePackagesDirPath "$SOURCE_PACKAGES_PATH" \
-disableAutomaticPackageResolution \
-resultBundlePath xcode-test-report \
test 2>&1 | xcbeautify
working-directory: ios/
- name: Archive test report
if: always()
run: zip -r test-report.zip ios/xcode-test-report.xcresult
- name: Store test report artifact
if: always()
uses: actions/upload-artifact@v4
with:
name: test-report
path: test-report.zip