-
-
Notifications
You must be signed in to change notification settings - Fork 310
187 lines (173 loc) · 6.14 KB
/
ci.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
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
name: CI
on:
push:
pull_request:
workflow_dispatch:
schedule: [cron: "40 1 * * *"]
permissions:
contents: read
env:
RUSTFLAGS: -Dwarnings
jobs:
pre_ci:
uses: dtolnay/.github/.github/workflows/pre_ci.yml@master
test:
name: Tests
needs: pre_ci
if: needs.pre_ci.outputs.continue
runs-on: ubuntu-latest
timeout-minutes: 45
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly
with:
components: llvm-tools, rustc-dev
- run: cargo test --all-features --release --tests
build:
name: ${{matrix.name || format('Rust {0}', matrix.rust)}}
needs: pre_ci
if: needs.pre_ci.outputs.continue
runs-on: ${{matrix.os || 'ubuntu'}}-latest
strategy:
fail-fast: false
matrix:
rust: [stable, beta, 1.63.0, 1.61.0]
include:
- rust: nightly
components: rustc-dev
- rust: nightly
name: WebAssembly
target: wasm32-unknown-unknown
- rust: nightly
name: WASI
target: wasm32-wasi
- rust: nightly
name: Windows
os: windows
env:
target: ${{matrix.target && format('--target={0}', matrix.target)}}
timeout-minutes: 45
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{matrix.rust}}
targets: ${{matrix.target}}
components: ${{matrix.components}}
- run: cargo check ${{env.target}} --no-default-features
- run: cargo check ${{env.target}}
- run: cargo check ${{env.target}} --features full
- run: cargo check ${{env.target}} --features 'fold visit visit-mut'
- run: cargo check ${{env.target}} --features 'full fold visit visit-mut'
- run: cargo check ${{env.target}} --no-default-features --features derive
- run: cargo check ${{env.target}} --no-default-features --features 'derive parsing'
- run: cargo check ${{env.target}} --no-default-features --features 'derive printing'
- run: cargo check ${{env.target}} --no-default-features --features 'proc-macro parsing printing'
- run: cargo check ${{env.target}} --no-default-features --features full
- run: cargo check ${{env.target}} --no-default-features --features 'full parsing'
- run: cargo check ${{env.target}} --no-default-features --features 'full printing'
- run: cargo check ${{env.target}} --no-default-features --features 'full parsing printing'
- run: cargo check ${{env.target}} --no-default-features --features 'fold visit visit-mut parsing printing'
- run: cargo check ${{env.target}} --no-default-features --features 'full fold visit visit-mut parsing printing'
- if: matrix.components == 'rustc-dev'
run: cargo check --benches --all-features --release
- if: matrix.rust != '1.61.0'
run: cargo check ${{env.target}} --manifest-path json/Cargo.toml --no-default-features
examples:
name: Examples
needs: pre_ci
if: needs.pre_ci.outputs.continue
runs-on: ubuntu-latest
timeout-minutes: 45
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly
- run: cargo check --manifest-path examples/dump-syntax/Cargo.toml
- run: cargo check --manifest-path examples/heapsize/example/Cargo.toml
- run: cargo check --manifest-path examples/lazy-static/example/Cargo.toml
- run: cargo check --manifest-path examples/trace-var/example/Cargo.toml
doc:
name: Documentation
needs: pre_ci
if: needs.pre_ci.outputs.continue
runs-on: ubuntu-latest
timeout-minutes: 45
env:
RUSTDOCFLAGS: -Dwarnings
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly
- uses: dtolnay/install@cargo-docs-rs
- run: cargo docs-rs
- run: cargo docs-rs --manifest-path json/Cargo.toml
- run: cargo test --all-features --doc
codegen:
name: Codegen
needs: pre_ci
if: needs.pre_ci.outputs.continue
runs-on: ubuntu-latest
timeout-minutes: 45
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- run: cargo run --manifest-path codegen/Cargo.toml
- run: git diff --exit-code
minimal:
name: Minimal versions
needs: pre_ci
if: needs.pre_ci.outputs.continue
runs-on: ubuntu-latest
timeout-minutes: 45
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly
- run: cargo generate-lockfile -Z minimal-versions
- run: cargo check --all-features --locked
fuzz:
name: Fuzz
needs: pre_ci
if: needs.pre_ci.outputs.continue
runs-on: ubuntu-latest
timeout-minutes: 45
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly
- uses: dtolnay/install@cargo-fuzz
- run: cargo fuzz check
miri:
name: Miri
needs: pre_ci
if: needs.pre_ci.outputs.continue
runs-on: ubuntu-latest
timeout-minutes: 45
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@miri
- run: cargo miri setup
- run: cargo miri test --all-features ${{github.event_name == 'pull_request' && '--tests' || ''}}
env:
MIRIFLAGS: -Zmiri-strict-provenance
clippy:
name: Clippy
runs-on: ubuntu-latest
if: github.event_name != 'pull_request'
timeout-minutes: 45
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly
with:
components: clippy,rustc-dev
- run: cargo clippy --all-features --tests --benches -- -Dclippy::all -Dclippy::pedantic
- run: cargo clippy --manifest-path codegen/Cargo.toml -- -Dclippy::all -Dclippy::pedantic
outdated:
name: Outdated
runs-on: ubuntu-latest
if: github.event_name != 'pull_request'
timeout-minutes: 45
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: dtolnay/install@cargo-outdated
- run: cargo outdated --workspace --exit-code 1
- run: cargo outdated --manifest-path fuzz/Cargo.toml --exit-code 1
- run: cargo outdated --manifest-path codegen/Cargo.toml --exit-code 1