-
Notifications
You must be signed in to change notification settings - Fork 0
154 lines (126 loc) · 4.22 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
149
150
151
152
153
154
name: Rust
on:
push:
branches:
- main
pull_request:
branches:
- main
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
env:
CARGO_TERM_COLOR: always
# don't install husky hooks during CI as they are only needed for for pre-push
CARGO_HUSKY_DONT_INSTALL_HOOKS: true
jobs:
lint:
name: Formatting and linting
strategy:
fail-fast: false
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v3
- name: Install Rust nightly
uses: dtolnay/rust-toolchain@nightly
with:
components: rustfmt
- name: Install cargo-make
uses: taiki-e/install-action@cargo-make
- name: Check typos
uses: crate-ci/typos@master
- name: Install cargo-make
uses: taiki-e/install-action@cargo-make
- name: Check formatting
run: cargo make fmt-check
- name: Lint dependencies
uses: EmbarkStudios/cargo-deny-action@v1
clippy:
name: Clippy
strategy:
fail-fast: false
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v3
- name: Install Rust nightly
uses: dtolnay/rust-toolchain@nightly
with:
components: clippy
- name: Cache dependencies
uses: Swatinem/rust-cache@v2
env:
cache-name: ci
with:
shared-key: ubuntu-latest-${{ env.cache-name }}-stable
- name: Install cargo-make
uses: taiki-e/install-action@cargo-make
- name: Check clippy
run: cargo make clippy
check:
name: Check
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout sources
uses: actions/checkout@v3
- name: Install Rust stable
uses: dtolnay/rust-toolchain@stable
- name: Cache dependencies
uses: Swatinem/rust-cache@v2
env:
cache-name: ci
with:
shared-key: ${{ matrix.os }}-${{ env.cache-name }}-stable
- name: Install cargo-make
uses: taiki-e/install-action@cargo-make
- name: Check
run: cargo make check
env:
RUST_BACKTRACE: full
test:
name: Test
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest ]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout sources
uses: actions/checkout@v3
- name: Install Rust stable
uses: dtolnay/rust-toolchain@stable
- name: Cache dependencies
uses: Swatinem/rust-cache@v2
env:
cache-name: ci
with:
shared-key: ${{ matrix.os }}-${{ env.cache-name }}-stable
- name: Install cargo-make
uses: taiki-e/install-action@cargo-make
- name: Test
run: cargo make test
env:
RUST_BACKTRACE: full
# Send Discord notification after every other job
notification:
name: Discord notification
needs: [lint, clippy, check, test]
runs-on: ubuntu-latest
if: ${{ always() }}
steps:
- name: Checkout sources
uses: actions/checkout@v3
- name: Setup notification
uses: 8BitJonny/gh-get-current-pr@v2.2.0
id: pr
- name: Actions Status Discord
uses: sarisia/actions-status-discord@v1.12.0
with:
url: ${{ steps.pr.outputs.pr_url }}
webhook: ${{ secrets.FO_DISCORD_WEB_DEVELOPMENT_WEBHOOK }}
title: ${{ steps.pr.outputs.pr_title }}