-
Notifications
You must be signed in to change notification settings - Fork 59
139 lines (111 loc) · 3.53 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
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@v3
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.25.2
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@v3
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
run: cargo install cargo-deny
shell: bash
- name: Cargo Deny - Check
run: cargo deny check
shell: bash
semver-checks:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Check semver
uses: obi1kenobi/cargo-semver-checks-action@v2