-
Notifications
You must be signed in to change notification settings - Fork 15
148 lines (141 loc) · 3.98 KB
/
rust.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
# The "Normal" CI for tests and linters and whatnot
name: Rust CI
# Ci should be run on...
on:
# Every pull request (will need approval for new contributors)
pull_request:
# Every push to...
push:
branches:
# The main branch
- main
# Not a thing I use personally but some people like having a release branch
- "release/**"
# And once a week?
# This can catch things like "rust updated and actually regressed something"
schedule:
- cron: "11 7 * * 1,4"
# We want all these checks to fail if they spit out warnings
env:
RUSTFLAGS: -Dwarnings
jobs:
# Check that rustfmt is a no-op
fmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
profile: minimal
components: rustfmt
override: true
- uses: actions-rs/cargo@v1
with:
command: fmt
args: --all -- --check
# Check that clippy is appeased
clippy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
profile: minimal
components: clippy
override: true
- uses: actions-rs/clippy-check@v1
env:
PWD: ${{ env.GITHUB_WORKSPACE }}
with:
token: ${{ secrets.GITHUB_TOKEN }}
args: --workspace --tests --examples
# Make sure the docs build without warnings
docs:
runs-on: ubuntu-latest
env:
RUSTDOCFLAGS: -Dwarnings
steps:
- uses: actions/checkout@master
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
profile: minimal
components: rust-docs
override: true
- uses: swatinem/rust-cache@v1
- uses: actions-rs/cargo@v1
with:
command: doc
args: --workspace --no-deps
# cargo-fuzz support, if needed/desired
#
# build-fuzz:
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v1
# - uses: actions-rs/toolchain@v1
# with:
# toolchain: nightly
# profile: minimal
# override: true
# - uses: actions-rs/cargo@v1
# env:
# PWD: ${{ env.GITHUB_WORKSPACE }}
# with:
# command: install
# args: cargo-fuzz
# - uses: actions-rs/cargo@v1
# env:
# PWD: ${{ env.GITHUB_WORKSPACE }}
# with:
# command: fuzz
# args: build --fuzz-dir fuzz
# Build and run tests/doctests/examples on all platforms
# FIXME: look into `cargo-hack` which lets you more aggressively
# probe all your features and rust versions (see tracing's ci)
test:
runs-on: ${{ matrix.os }}
strategy:
# Test the cross-product of these platforms+toolchains
matrix:
os: [ubuntu-latest, windows-latest, macOS-latest]
rust: [nightly, stable]
steps:
# Setup tools
- uses: actions/checkout@master
- uses: actions-rs/toolchain@v1
with:
toolchain: ${{ matrix.rust }}
profile: minimal
override: true
- uses: swatinem/rust-cache@v1
# Run the tests/doctests (default features)
- uses: actions-rs/cargo@v1
env:
PWD: ${{ env.GITHUB_WORKSPACE }}
with:
command: test
args: --workspace
# Run the tests/doctests (all features)
- uses: actions-rs/cargo@v1
env:
PWD: ${{ env.GITHUB_WORKSPACE }}
with:
command: test
args: --workspace --all-features
# Test the examples (default features)
- uses: actions-rs/cargo@v1
env:
PWD: ${{ env.GITHUB_WORKSPACE }}
with:
command: test
args: --workspace --examples --bins
# Test the examples (all features)
- uses: actions-rs/cargo@v1
env:
PWD: ${{ env.GITHUB_WORKSPACE }}
with:
command: test
args: --workspace --all-features --examples --bins