This repository has been archived by the owner on Feb 11, 2024. It is now read-only.
generated from WalletConnect/rust-http-starter
-
Notifications
You must be signed in to change notification settings - Fork 2
210 lines (183 loc) · 5.71 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
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
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
name: ci
on:
workflow_dispatch:
pull_request:
paths-ignore:
- ".github/**"
- "spec/**"
- "terraform/**"
- "*.md"
- "LICENSE"
push:
branches:
- "main"
paths-ignore:
- ".github/**"
- "spec/**"
- "terraform/**"
- "*.md"
- "LICENSE"
concurrency:
# Support push/pr as event types with different behaviors each:
# 1. push: queue up builds
# 2. pr: only allow one run per PR
group: ${{ github.workflow }}-${{ github.event.type }}${{ github.event.pull_request.number }}
# If there is already a workflow running for the same pull request, cancel it
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
jobs:
tasks:
name: "${{ matrix.cargo.name }} [${{ matrix.os }}/rust-${{matrix.rust}}]"
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
rust:
- nightly
cargo:
- name: "Clippy"
cmd: clippy
args: --all-features --tests -- -D clippy::all -W clippy::style
cache: {}
- name: "Formatting"
cmd: fmt
args: -- --check
cache: {}
- name: "Unit Tests"
cmd: test
args: --features ci-tests
cache: { sharedKey: "tests" }
- name: "Documentation Tests"
cmd: test
args: --doc
rust: stable
cache: {}
include:
- sccache-path: /home/runner/.cache/sccache
env:
RUST_BACKTRACE: full
RUSTC_WRAPPER: sccache
SCCACHE_CACHE_SIZE: 1G
SCCACHE_DIR: ${{ matrix.sccache-path }}
steps:
- name: "Git checkout"
uses: actions/checkout@v3
with:
submodules: recursive
- name: "Install sccache"
env:
SCCACHE_URL: https://github.com/mozilla/sccache/releases/download
SCCACHE_VERSION: v0.4.0
run: |
SCCACHE_FILE=sccache-$SCCACHE_VERSION-x86_64-unknown-linux-musl
curl -sSL "$SCCACHE_URL/$SCCACHE_VERSION/$SCCACHE_FILE.tar.gz" | tar xz
install -vDm 755 "$SCCACHE_FILE/sccache" "$HOME/.local/bin/sccache"
echo "$HOME/.local/bin" >> "$GITHUB_PATH"
- name: "Install Rust ${{ matrix.rust }}"
uses: actions-rs/toolchain@v1
with:
toolchain: ${{ matrix.rust }}
profile: minimal
override: true
components: rustfmt, clippy
# Rebuild cache
- name: Cache cargo registry
uses: Swatinem/rust-cache@v2
with: ${{ matrix.cargo.cache }}
continue-on-error: false
- name: Cache sccache
uses: actions/cache@v2
continue-on-error: false
with:
path: ${{ matrix.sccache-path }}
key: ${{ runner.os }}-sccache-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-sccache-
- name: "Start sccache server"
run: |
sccache --stop-server || true
sccache --start-server
- name: Install Protoc
uses: arduino/setup-protoc@v1
# Run job
- name: "Task ${{ matrix.cargo.name }}"
uses: actions-rs/cargo@v1
with:
command: ${{ matrix.cargo.cmd }}
args: ${{ matrix.cargo.args }}
- name: "Print sccache stats"
run: sccache --show-stats
- name: "Stop sccache server"
run: sccache --stop-server || true
integration:
name: "Integration Tests"
runs-on: ubuntu-latest
env:
RUST_BACKTRACE: full
RUSTC_WRAPPER: sccache
SCCACHE_CACHE_SIZE: 1G
SCCACHE_DIR: /home/runner/.cache/sccache
steps:
- name: "Git checkout"
uses: actions/checkout@v3
with:
submodules: recursive
- name: "Install sccache"
env:
SCCACHE_URL: https://github.com/mozilla/sccache/releases/download
SCCACHE_VERSION: v0.4.0
run: |
SCCACHE_FILE=sccache-$SCCACHE_VERSION-x86_64-unknown-linux-musl
curl -sSL "$SCCACHE_URL/$SCCACHE_VERSION/$SCCACHE_FILE.tar.gz" | tar xz
install -vDm 755 "$SCCACHE_FILE/sccache" "$HOME/.local/bin/sccache"
echo "$HOME/.local/bin" >> "$GITHUB_PATH"
- name: "Install Rust nightly"
uses: actions-rs/toolchain@v1
with:
toolchain: nightly
profile: minimal
override: true
components: rustfmt, clippy
# Rebuild cache
- name: Cache cargo registry
uses: Swatinem/rust-cache@v2
with:
sharedKey: "tests"
continue-on-error: false
- name: Cache sccache
uses: actions/cache@v2
continue-on-error: false
with:
path: /home/runner/.cache/sccache
key: ${{ runner.os }}-sccache-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-sccache-
- name: "Start sccache server"
run: |
sccache --stop-server || true
sccache --start-server
- name: Start MongoDB
uses: supercharge/mongodb-github-action@1.8.0
with:
mongodb-version: '4.4'
mongodb-db: gilgamesh
- name: Install Protoc
uses: arduino/setup-protoc@v1
# Run job
- name: "Storage Tests"
uses: actions-rs/cargo@v1
env:
MONGO_ADDRESS: mongodb://localhost:27017/gilgamesh
with:
command: test
args: --features storage-tests
- name: "Print sccache stats"
run: sccache --show-stats
- name: "Stop sccache server"
run: sccache --stop-server || true
release:
needs: [tasks, integration]
if: github.event_name != 'pull_request'
uses: ./.github/workflows/release.yml
secrets: inherit