-
Notifications
You must be signed in to change notification settings - Fork 77
132 lines (123 loc) · 3.93 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
# 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
# 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:
# Test and fmt the npm pkg
npm:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v4
with:
node-version: 20
- name: npm fmt
working-directory: cargo-dist/templates/installer/npm
run: npm ci && npm run fmt:check
# Check that rustfmt is a no-op
fmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
components: rustfmt
- run: cargo fmt --all -- --check
# Check that clippy is appeased
clippy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
components: clippy
- uses: swatinem/rust-cache@v2
- 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: dtolnay/rust-toolchain@master
with:
toolchain: stable
components: rust-docs
- uses: swatinem/rust-cache@v2
- run: cargo doc --workspace --no-deps
# Check for typos (exceptions are provided by the typos.toml)
typos:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Check spelling of entire workspace
uses: crate-ci/[email protected]
# 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 }}
env:
# runtest the installer scripts
RUIN_MY_COMPUTER_WITH_INSTALLERS: all
strategy:
# Test the cross-product of these platforms+toolchains
matrix:
os: [ubuntu-latest, windows-latest, macos-14]
rust: [stable]
steps:
# Setup tools
- uses: actions/checkout@master
- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust }}
- uses: swatinem/rust-cache@v2
with:
key: ${{ matrix.os }}
# install pnpm for npm runtests
- run: npm i -g pnpm
# install omnibor-cli for tests
- run: |
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/omnibor/omnibor-rs/releases/latest/download/omnibor-cli-installer.sh | sh
# Currently there is essentially no difference between default and --all-features,
# with the difference essentially being polyfilling a new stdio API for MSRV.
# For now avoid --all-features which causes issues with axoproject.
# Run the tests/doctests (default features)
# - run: cargo test --workspace
# env:
# PWD: ${{ env.GITHUB_WORKSPACE }}
# Run the tests/doctests
- run: cargo test --workspace
env:
PWD: ${{ env.GITHUB_WORKSPACE }}
CARGO_DIST_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# Test the examples (default features)
# - run: cargo test --workspace --examples --bins
# env:
# PWD: ${{ env.GITHUB_WORKSPACE }}
# Test the examples
- run: cargo test --workspace --examples --bins
env:
PWD: ${{ env.GITHUB_WORKSPACE }}