-
Notifications
You must be signed in to change notification settings - Fork 2
147 lines (106 loc) · 3.96 KB
/
build.yaml
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
name: build
on: [push, pull_request]
jobs:
# ---------------------------------------------------------------------------
# Lint
# ---------------------------------------------------------------------------
lint:
runs-on: ubuntu-latest
strategy:
matrix:
toolchain: [stable, beta, nightly]
env:
RUSTFLAGS: --deny warnings
steps:
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.toolchain }}
components: clippy, rustfmt
- name: Rustfmt
run: cargo fmt -- --check
- name: Clippy
continue-on-error: ${{ matrix.toolchain == 'nightly' }}
run: cargo clippy --workspace --all-targets
- name: Check (internal debug)
run: cargo check
env:
RUSTFLAGS: --deny warnings --cfg internal_debug
# ---------------------------------------------------------------------------
# Test
# ---------------------------------------------------------------------------
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@stable
- name: Test
run: cargo test --workspace
- name: Test (no default features)
run: cargo test --lib --tests --no-default-features
- name: Test (filters)
run: cargo test --lib --tests --no-default-features --features filters
- name: Test (serde)
run: cargo test --lib --tests --no-default-features --features serde
- name: Test (unicode)
run: cargo test --lib --tests --no-default-features --features unicode
- name: Test (filters,serde)
run: cargo test --lib --tests --no-default-features --features filters,serde
- name: Test (serde,unicode)
run: cargo test --lib --tests --no-default-features --features serde,unicode
- name: Test (filters,unicode)
run: cargo test --lib --tests --no-default-features --features filters,unicode
# ---------------------------------------------------------------------------
# MSRV
# ---------------------------------------------------------------------------
msrv:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: dtolnay/[email protected]
- name: Check (no filters)
run: cargo check --no-default-features --features serde,unicode
- uses: dtolnay/[email protected]
- name: Test
run: cargo test
env:
RUSTFLAGS: --deny warnings
# ---------------------------------------------------------------------------
# Check README
# ---------------------------------------------------------------------------
readme:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@stable
- name: Install cargo-onedoc
run: cargo install cargo-onedoc --locked
- name: Check README
run: cargo onedoc --check
# ---------------------------------------------------------------------------
# Check version against tag
# ---------------------------------------------------------------------------
check-version:
needs: [lint, test, msrv, readme]
if: startsWith(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Calculate version from tag
id: version
run: echo "::set-output name=value::${GITHUB_REF#refs/tags/}"
- name: Check tag against package version
run: grep '^version = "${{ steps.version.outputs.value }}"$' Cargo.toml
# ---------------------------------------------------------------------------
# Publish to Crates.io
# ---------------------------------------------------------------------------
publish:
needs: check-version
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@stable
- name: Publish
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CRATES_IO_TOKEN }}
run: cargo publish