-
Notifications
You must be signed in to change notification settings - Fork 94
132 lines (109 loc) · 3.77 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
# We use --offline to be sure that we do not access the network
name: CI
on:
push:
pull_request:
env:
# https://doc.rust-lang.org/cargo/reference/profiles.html#release
RUSTFLAGS: -Coverflow-checks=y -Cdebug-assertions=y
# https://doc.rust-lang.org/cargo/reference/profiles.html#incremental
CARGO_INCREMENTAL: 1
# https://nexte.st/book/pre-built-binaries.html#using-nextest-in-github-actions
CARGO_TERM_COLOR: always
jobs:
run_checks:
strategy:
matrix:
# FIXME: use the latest version of cargo nextest when we get rid of 1.71
# and 1.72
rust_toolchain_version: ["1.71", "1.72"]
# FIXME: currently not available for 5.0.0.
# It might be related to boxroot dependency, and we would need to bump
# up the ocaml-rs dependency
ocaml_version: ["4.14"]
runs-on: ubuntu-latest
name: Run some basic checks and tests
steps:
- name: Checkout PR
uses: actions/[email protected]
with:
submodules: true
# as action-rs does not seem to be maintained anymore, building from
# scratch the environment using rustup
- name: Setup Rust toolchain ${{ matrix.rust_toolchain_version }}
run:
|
curl --proto '=https' --tlsv1.2 -sSf -o rustup-init \
https://static.rust-lang.org/rustup/dist/x86_64-unknown-linux-gnu/rustup-init
chmod +x ./rustup-init
./rustup-init -y --default-toolchain "${{ matrix.rust_toolchain_version }}" --profile default
rm ./rustup-init
echo "$HOME/.cargo/bin" >> $GITHUB_PATH
# overwriting default rust-toolchain
echo ${{ matrix.rust_toolchain_version }} > rust-toolchain
- name: Setup OCaml (because of ocaml-gen)
run: |
sudo apt update
sudo apt install -y ocaml
- name: Install markdownlint
run: |
npm install -g markdownlint-cli
#
# Doc & Spec
#
- name: Install cargo-spec for specifications
run: |
cargo install --locked cargo-spec
- name: Build the kimchi specification
run: |
cd book/specifications
cd kimchi && make build
- name: Build the polynomial commitment specification
run: |
cd book/specifications
cd poly-commitment && make build
- name: Check that up-to-date specification is checked in
run: |
git diff --exit-code ":(exclude)rust-toolchain"
#
# Coding guidelines
#
- name: Enforce formating
run: |
cargo fmt -- --check
- name: Lint (clippy)
uses: actions-rs/cargo@v1
with:
command: clippy
args: --all-features --tests --all-targets --offline -- -D warnings
- name: Run Clippy (beta)
uses: actions-rs/clippy-check@v1
continue-on-error: true
with:
name: Clippy (beta)
token: ${{ secrets.GITHUB_TOKEN }}
args: --all-features --all-targets --offline -- -W clippy::all
#
# Build
#
- name: Ensure that everything builds
uses: actions-rs/cargo@v1
with:
command: build
args: --all-targets --all-features --offline
#
# Tests
#
# https://nexte.st/book/pre-built-binaries.html#using-nextest-in-github-actions
- name: Install latest nextest release
uses: taiki-e/install-action@nextest
- name: Test with latest nextest release (faster than cargo test)
uses: actions-rs/cargo@v1
with:
command: nextest
args: run --all-features --release --offline
- name: Doc tests
uses: actions-rs/cargo@v1
with:
command: test
args: --all-features --release --doc --offline