-
Notifications
You must be signed in to change notification settings - Fork 59
162 lines (130 loc) · 4.1 KB
/
build.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
name: build
on: [push, pull_request]
jobs:
build:
name: Build
strategy:
fail-fast: false
matrix:
platform: [ubuntu-latest, macos-latest, windows-latest]
toolchain: [stable]
runs-on: ${{ matrix.platform }}
steps:
- name: Checkout Sources
uses: actions/checkout@v4
- name: Cache Dependencies & Build Outputs
uses: actions/cache@v4
with:
path: ~/.cargo
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Install Rust Toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.toolchain }}
components: rustfmt, clippy
- name: Check Code Format
run: cargo fmt --all -- --check
shell: bash
- name: Code Lint
run: cargo clippy --all-targets --all-features --workspace -- -D warnings
shell: bash
- name: Code Lint Without Default Features
run: cargo clippy --no-default-features --workspace -- -D warnings
shell: bash
- name: Test
run: cargo test --all-features --workspace
shell: bash
build-no-std:
name: Build no_std
runs-on: ubuntu-latest
steps:
- name: Checkout Sources
uses: actions/checkout@v4
- name: Install Rust Toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: thumbv6m-none-eabi
- name: Build
run: cargo build --no-default-features --workspace --target thumbv6m-none-eabi
shell: bash
build-no-std-with-serde:
name: Build no_std with `serde` feature enabled
runs-on: ubuntu-latest
steps:
- name: Checkout Sources
uses: actions/checkout@v4
- name: Install Rust Toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: thumbv6m-none-eabi
- name: Build
run: cargo build --no-default-features --features serde --workspace --target thumbv6m-none-eabi
shell: bash
msrv:
name: MSRV
runs-on: ubuntu-latest
steps:
- name: Checkout Sources
uses: actions/checkout@v4
- name: Extract MSRV from Cargo.toml
run: |
MSRV=$(cargo metadata --format-version 1 --no-deps | jq -r '.packages[] | select(.name == "multihash") | .rust_version')
echo "MSRV=$MSRV" >> $GITHUB_ENV
- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ env.MSRV }}
- uses: Swatinem/rust-cache@v2
- run: cargo +"$MSRV" build --package multihash
coverage:
name: Code Coverage
runs-on: ubuntu-latest
container:
image: xd009642/tarpaulin:0.30.0
options: --security-opt seccomp=unconfined
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Generate code coverage
run: cargo tarpaulin --verbose --all-features --workspace --timeout 120 --out Xml
- name: Upload Code Coverage
uses: codecov/codecov-action@v4
cargo-deny:
name: Cargo Deny
runs-on: ubuntu-latest
steps:
- name: Checkout Sources
uses: actions/checkout@v4
- name: Install Rust Toolchain
uses: dtolnay/rust-toolchain@stable
- name: Install cargo-deny
uses: taiki-e/install-action@v2
with:
tool: cargo-deny
- name: Cargo Deny - Check
run: cargo deny check
shell: bash
# todo: run on all crates
cargo-hack-codetable:
name: Cargo Hack - codetable
runs-on: ubuntu-latest
steps:
- name: Checkout Sources
uses: actions/checkout@v4
- name: Install Rust Toolchain
uses: dtolnay/rust-toolchain@stable
- name: Install cargo-hack
uses: taiki-e/install-action@v2
with:
tool: cargo-hack
- name: Cargo Hack - Check each feature
run: cargo hack check -p multihash-codetable --each-feature
shell: bash
env:
RUSTFLAGS: -D warnings
semver-checks:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Check semver
uses: obi1kenobi/cargo-semver-checks-action@v2