-
Notifications
You must be signed in to change notification settings - Fork 0
165 lines (160 loc) · 5.06 KB
/
rust.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
# Metadata for the actions workflow
name: "Rust CI"
on:
push:
branches: ["main"]
pull_request:
branches: ["*"]
# Environment variables that will be set on all runners
env:
DEV_SHELL: "nix develop '.#ci'"
CARGO_TERM_COLOR: always # Always colour Cargo's output.
CARGO_INCREMENTAL: 0 # Always run without incremental builds on CI.
CARGO_PROFILE_DEV_DEBUG: 0 # Don't embed debug info even though the build is a dev build.
RUSTFLAGS: "-D warnings" # Elevate warnings to errors so clippy will fail CI.
RUSTDOCFLAGS: "-D warnings" # Elevate warnings to errors so clippy will fail CI.
# Configuration for individual jobs
jobs:
# This job is responsible for running the unit and integration tests
test:
name: "Test Rust Code"
strategy:
fail-fast: false
matrix:
os: ["ubuntu-latest", "macos-latest"]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout Code
uses: actions/checkout@v3
with:
submodules: recursive
- name: Install Lix
shell: "bash"
run: |
curl -sSf -L https://install.lix.systems/lix | sh -s -- install --no-confirm
- name: Restore Rust Cache
uses: actions/cache@v3
continue-on-error: true
with:
path: |
target/
key: rust-${{ hashFiles('**/Cargo.lock') }}-${{ matrix.os }}
- name: Build Lix Dependencies
shell: "bash"
run: |
eval ${{ env.DEV_SHELL }}
- name: Build Tests
shell: "bash"
run: |
eval "${{ env.DEV_SHELL }} --command cargo test --all-targets --no-run"
- name: Run Tests
shell: "bash"
run: |
eval "${{ env.DEV_SHELL }} --command cargo test --all-targets -- --nocapture"
# This job runs the linter.
lint:
name: "Lint Rust Code"
runs-on: "ubuntu-latest"
steps:
- name: Checkout Code
uses: actions/checkout@v3
with:
submodules: recursive
- name: Install Lix
shell: bash
run: |
curl -sSf -L https://install.lix.systems/lix | sh -s -- install --no-confirm
- name: Restore Nix Cache
uses: actions/cache@v3
continue-on-error: true
with:
path: |
~/nix_store
key: nix-${{ hashFiles('**/flake.lock') }}-ubuntu-latest
- name: Restore Rust Cache
uses: actions/cache@v3
continue-on-error: true
with:
path: |
target/
key: rust-${{ hashFiles('**/Cargo.lock') }}-ubuntu-latest
- name: Build Lix Dependencies
shell: bash
run: |
${{ env.DEV_SHELL }}
- name: Lint Code
shell: bash
run: |
${{ env.DEV_SHELL }} --command cargo clippy --all-targets --all-features
# This job checks the formatting of the code and other artifacts.
formatting:
name: "Check Rust Formatting"
runs-on: "ubuntu-latest"
steps:
- name: Checkout Code
uses: actions/checkout@v3
with:
submodules: recursive
- name: Install Lix
shell: bash
run: |
curl -sSf -L https://install.lix.systems/lix | sh -s -- install --no-confirm
- name: Restore Nix Cache
uses: actions/cache@v3
continue-on-error: true
with:
path: |
~/nix_store
key: nix-${{ hashFiles('**/flake.lock') }}-ubuntu-latest
- name: Restore Rust Cache
uses: actions/cache@v3
continue-on-error: true
with:
path: |
target/
key: rust-${{ hashFiles('**/Cargo.lock') }}-ubuntu-latest
- name: Build Lix Dependencies
shell: bash
run: |
${{ env.DEV_SHELL }}
- name: Check Formatting
shell: bash
# Not using `cargo fmt --all` because it includes cairo submodules.
# Check this issue https://github.com/rust-lang/cargo/issues/13962#issue-2315478020
# Check this code https://github.com/rust-lang/cargo/issues/13962#issue-2315478020
run: |
${{ env.DEV_SHELL }} --command cargo fmt -- --check
documentation:
name: "Check Rust Documentation"
runs-on: "ubuntu-latest"
steps:
- name: Checkout Code
uses: actions/checkout@v3
with:
submodules: recursive
- name: Install Lix
shell: bash
run: |
curl -sSf -L https://install.lix.systems/lix | sh -s -- install --no-confirm
- name: Restore Nix Cache
uses: actions/cache@v3
continue-on-error: true
with:
path: |
~/nix_store
key: nix-${{ hashFiles('**/flake.lock') }}-ubuntu-latest
- name: Restore Rust Cache
uses: actions/cache@v3
continue-on-error: true
with:
path: |
target/
key: rust-${{ hashFiles('**/Cargo.lock') }}-ubuntu-latest
- name: Build Lix Dependencies
shell: bash
run: |
${{ env.DEV_SHELL }}
- name: Check Documentation
shell: bash
run: |
${{ env.DEV_SHELL }} --command cargo doc --document-private-items