-
Notifications
You must be signed in to change notification settings - Fork 532
166 lines (148 loc) · 5.59 KB
/
swift-test.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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
name: Swift CI
on:
pull_request:
types: [ opened, synchronize, edited ]
paths:
- 'app-ios/**'
- '.github/workflows/swift-test.yml'
push:
branches:
- dev-*
- '*/dev'
paths:
- 'app-ios/**'
env:
swift-version: "5.9.2"
swift-format-version: "509.0.0"
jobs:
test-swift:
runs-on: macos-14
permissions:
actions: none
checks: none
contents: read
deployments: none
id-token: none
issues: none
discussions: none
packages: none
pages: none
pull-requests: none
repository-projects: none
security-events: none
statuses: none
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 #v4.1.1
with:
submodules: 'true'
- name: Setup Swift
uses: swift-actions/setup-swift@cdbe0f7f4c77929b6580e71983e8606e55ffe7e4 # v1.26.2
with:
swift-version: ${{ env.swift-version }}
- name: Install Homebrew
uses: Homebrew/actions/setup-homebrew@d54a6744d5fcdff54b45a9659f3e17f769389952
- name: Install Homebrew dependencies
run: |
brew install swiftlint swift-format xcodegen
brew upgrade rustup
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 #3.0.2
id: filter
with:
filters: |
mail:
- 'app-ios/tutanota/**'
calendar:
- 'app-ios/calendar/**'
- name: Versions
run: |
rustup --version
cargo --version
rustc --version
- name: Add rust target
run: rustup target add aarch64-apple-ios-sim
- name: Restore Rust Caches
uses: Swatinem/rust-cache@v2
with:
# The prefix cache key, this can be changed to start a new cache manually.
# default: "v0-rust"
# prefix-key: ""
# A cache key that is used instead of the automatic `job`-based key,
# and is stable over multiple jobs.
# default: empty
shared-key: "rust"
# An additional cache key that is added alongside the automatic `job`-based
# cache key and can be used to further differentiate jobs.
# default: empty
# key: ""
# A whitespace separated list of env-var *prefixes* who's value contributes
# to the environment cache key.
# The env-vars are matched by *prefix*, so the default `RUST` var will
# match all of `RUSTC`, `RUSTUP_*`, `RUSTFLAGS`, `RUSTDOC_*`, etc.
# default: "CARGO CC CFLAGS CXX CMAKE RUST"
# env-vars: ""
# The cargo workspaces and target directory configuration.
# These entries are separated by newlines and have the form
# `$workspace -> $target`. The `$target` part is treated as a directory
# relative to the `$workspace` and defaults to "target" if not explicitly given.
# default: ". -> target"
workspaces: "
./tuta-sdk/rust/ -> target
./packages/node-mimimi/ -> target
"
# Additional non workspace directories to be cached, separated by newlines.
# cache-directories: ""
# Determines whether workspace `target` directories are cached.
# If `false`, only the cargo registry will be cached.
# default: "true"
# cache-targets: ""
# Determines if the cache should be saved even when the workflow has failed.
# default: "false"
# cache-on-failure: ""
# Determines which crates are cached.
# If `true` all crates will be cached, otherwise only dependent crates will be cached.
# Useful if additional crates are used for CI tooling.
# default: "false"
# cache-all-crates: ""
# Determines whether the cache should be saved.
# If `false`, the cache is only restored.
# Useful for jobs where the matrix is additive e.g. additional Cargo features,
# or when only runs from `master` should be saved to the cache.
# default: "true"
# save-if: ""
# To only cache runs from `master`:
# save-if: ${{ github.ref == 'refs/heads/master' }}
# Determines whether the cache should be restored.
# If `true` the cache key will be checked and the `cache-hit` output will be set
# but the cache itself won't be restored
# default: "false"
# lookup-only: ""
# Specifies what to use as the backend providing cache
# Can be set to either "github" or "buildjet"
# default: "github"
# cache-provider: ""
# Determines whether to cache the ~/.cargo/bin directory.
# default: "true"
# cache-bin: ""
- name: Lint
working-directory: ./app-ios
run: ./lint.sh lint:check
- name: Format
working-directory: ./app-ios
run: ./lint.sh style:check
- name: Xcodegen sdk
working-directory: tuta-sdk/ios
run: xcodegen
- name: Test Calendar
working-directory: app-ios
#if: ${{ steps.filter.outputs.calendar == 'true' }}
run: |
mkdir -p ../build-calendar-app
xcodegen --spec calendar-project.yml
fastlane test_calendar_github
- name: Test Mail
working-directory: app-ios
#if: ${{ steps.filter.outputs.calendar == 'false' || steps.filter.outputs.mail == 'true' }} # Runs mail test also as fallback test
run: |
mkdir -p ../build
xcodegen --spec mail-project.yml
fastlane test_github