-
Notifications
You must be signed in to change notification settings - Fork 214
133 lines (118 loc) · 3.8 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
name: CI
on:
push:
pull_request:
schedule:
- cron: "40 5 * * *" # every day at 5:40
# This causes PR pushes to cancel previous builds, but does not impact cron jobs due to use of .ref, which will have the commit.
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
check:
name: Check
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v3
- run: cargo --version --verbose
- uses: Swatinem/rust-cache@v2
- uses: r7kamura/[email protected]
- name: "Run `cargo check`"
run: cargo check --all-targets --all
- name: "Check test kernels"
run: cargo check --all
working-directory: tests/test_kernels
- name: "Check docs.rs build"
run: cargo check
env:
RUSTFLAGS: "--cfg docsrs_dummy_build"
test:
name: Test
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
runs-on: ${{ matrix.os }}
timeout-minutes: 30
steps:
- uses: actions/checkout@v3
- run: cargo --version --verbose
- uses: Swatinem/rust-cache@v2
# install QEMU
- name: Install QEMU (Linux)
run: sudo apt update && sudo apt install qemu-system-x86
if: runner.os == 'Linux'
- name: Install QEMU (macOS)
run: brew install qemu
if: runner.os == 'macOS'
env:
HOMEBREW_NO_AUTO_UPDATE: 1
HOMEBREW_NO_BOTTLE_SOURCE_FALLBACK: 1
HOMEBREW_NO_INSTALL_CLEANUP: 1
- name: Install QEMU (Windows)
run: |
choco install qemu --version 2021.5.5
echo "$Env:Programfiles\qemu" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
if: runner.os == 'Windows'
shell: pwsh
- name: "Print QEMU Version"
run: qemu-system-x86_64 --version
- uses: r7kamura/[email protected]
- name: Run api tests
run: cargo test -p bootloader_api
- name: Run bootloader common tests
if: runner.arch == 'X64'
run: cargo test -p bootloader-x86_64-common
- name: Run integration tests
run: cargo test -- --test-threads 1
# test feature gates (only on one OS is enough)
- name: Test with only UEFI feature
if: runner.os == 'Linux'
run: cargo test --no-default-features --features uefi
- name: Test with only BIOS feature
if: runner.os == 'Linux'
run: cargo test --no-default-features --features bios
fmt:
name: Check Formatting
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: r7kamura/[email protected]
- run: cargo fmt --all -- --check
- run: cargo fmt --all -- --check
working-directory: tests/test_kernels
clippy:
name: Clippy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: cargo --version --verbose
- uses: Swatinem/rust-cache@v2
- uses: r7kamura/[email protected]
- run: cargo clippy --all --all-targets
- run: cargo clippy --all
working-directory: tests/test_kernels
semver-checks:
name: Semver Checks
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: Swatinem/rust-cache@v2
with:
shared-key: "semver-checks"
cache-targets: false
- name: Check semver (API)
uses: obi1kenobi/cargo-semver-checks-action@v2
with:
package: bootloader_api
rust-toolchain: manual
- name: Check semver
uses: obi1kenobi/cargo-semver-checks-action@v2
with:
rust-toolchain: manual
typos:
name: Check spelling
runs-on: ubuntu-latest
steps:
- uses: crate-ci/[email protected]