-
Notifications
You must be signed in to change notification settings - Fork 2
134 lines (98 loc) · 3.42 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
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@v4
- 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@v4
- uses: dtolnay/rust-toolchain@stable
- uses: extractions/setup-crate@v1
with:
owner: taiki-e
name: cargo-hack
- name: Test
run: cargo test --workspace
- name: Test (feature powerset)
run: cargo hack test --package upon --feature-powerset --depth 2 --lib --tests
# ---------------------------------------------------------------------------
# MSRV
# ---------------------------------------------------------------------------
msrv:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@1.60
- name: Check (no filters)
run: cargo check --no-default-features --features serde,unicode
- uses: dtolnay/rust-toolchain@1.65
- name: Test
run: cargo test
env:
RUSTFLAGS: --deny warnings
# ---------------------------------------------------------------------------
# Check README
# ---------------------------------------------------------------------------
readme:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- 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@v4
- name: Calculate version from tag
id: version
run: echo "value=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
- 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@v4
- uses: dtolnay/rust-toolchain@stable
- name: Publish
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CRATES_IO_TOKEN }}
run: cargo publish