Next Generation WASM Microkernel Operating System
1name: CI
2
3on:
4 push:
5 pull_request:
6
7permissions:
8 contents: read
9
10env:
11 CARGO_TERM_COLOR: always
12 CLICOLOR: 1
13
14concurrency:
15 group: ${{ github.workflow }}-${{ github.ref }}
16 cancel-in-progress: true
17
18jobs:
19 pre_ci:
20 uses: dtolnay/.github/.github/workflows/pre_ci.yml@master
21
22 check:
23 name: Check
24 needs: pre_ci
25 if: needs.pre_ci.outputs.continue
26 runs-on: ubuntu-latest
27 timeout-minutes: 5
28 steps:
29 - uses: actions/checkout@v4
30 - name: Install Nix
31 uses: cachix/install-nix-action@v31
32 with:
33 github_access_token: ${{ secrets.GITHUB_TOKEN }}
34 - uses: Swatinem/rust-cache@v2
35 - name: cargo check
36 run: nix develop --command just check
37 env:
38 RUSTFLAGS: -Dwarnings
39
40 rustfmt:
41 name: Rustfmt
42 needs: pre_ci
43 if: needs.pre_ci.outputs.continue
44 runs-on: ubuntu-latest
45 timeout-minutes: 5
46 steps:
47 - uses: actions/checkout@v4
48 - name: Install Nix
49 uses: cachix/install-nix-action@v31
50 with:
51 github_access_token: ${{ secrets.GITHUB_TOKEN }}
52 - uses: Swatinem/rust-cache@v2
53 - name: cargo fmt
54 run: nix develop --command just check-fmt
55 env:
56 RUSTFLAGS: -Dwarnings
57
58 clippy:
59 name: Clippy
60 needs: pre_ci
61 if: needs.pre_ci.outputs.continue
62 runs-on: ubuntu-latest
63 timeout-minutes: 5
64 steps:
65 - uses: actions/checkout@v4
66 - name: Install Nix
67 uses: cachix/install-nix-action@v31
68 with:
69 github_access_token: ${{ secrets.GITHUB_TOKEN }}
70 - uses: Swatinem/rust-cache@v2
71 - name: cargo clippy
72 run: nix develop --command just clippy
73 env:
74 RUSTFLAGS: -Dwarnings
75
76 cargo-deny:
77 name: Cargo deny
78 runs-on: ubuntu-latest
79 needs: pre_ci
80 if: needs.pre_ci.outputs.continue
81 steps:
82 - uses: actions/checkout@v4
83 - name: Check Rust Code
84 uses: EmbarkStudios/cargo-deny-action@v2
85
86 test-hosted:
87 name: Hosted Tests
88 needs: pre_ci
89 if: needs.pre_ci.outputs.continue
90 runs-on: ubuntu-latest
91 timeout-minutes: 10
92 steps:
93 - uses: actions/checkout@v4
94 - name: Install Nix
95 uses: cachix/install-nix-action@v31
96 with:
97 github_access_token: ${{ secrets.GITHUB_TOKEN }}
98 - uses: Swatinem/rust-cache@v2
99 - name: just test-hosted
100 run: nix develop --command just test
101
102 test-miri:
103 name: Miri Tests
104 needs: pre_ci
105 if: needs.pre_ci.outputs.continue
106 runs-on: ubuntu-latest
107 timeout-minutes: 10
108 steps:
109 - uses: actions/checkout@v4
110 - name: Install Nix
111 uses: cachix/install-nix-action@v31
112 with:
113 github_access_token: ${{ secrets.GITHUB_TOKEN }}
114 - uses: Swatinem/rust-cache@v2
115 - name: just test-miri
116 run: nix develop --command just miri
117
118 test-loom:
119 name: Loom Tests
120 needs: pre_ci
121 if: needs.pre_ci.outputs.continue
122 runs-on: ubuntu-latest
123 timeout-minutes: 10
124 steps:
125 - uses: actions/checkout@v4
126 - name: Install Nix
127 uses: cachix/install-nix-action@v31
128 with:
129 github_access_token: ${{ secrets.GITHUB_TOKEN }}
130 - uses: Swatinem/rust-cache@v2
131 - name: just test-loom
132 run: nix develop --command just loom
133
134 test-riscv64:
135 name: "On-Target Tests: RISCV 64-bit"
136 needs: pre_ci
137 if: needs.pre_ci.outputs.continue
138 runs-on: ubuntu-latest
139 timeout-minutes: 10
140 steps:
141 - uses: actions/checkout@v4
142 - name: Install Nix
143 uses: cachix/install-nix-action@v31
144 with:
145 github_access_token: ${{ secrets.GITHUB_TOKEN }}
146 - uses: Swatinem/rust-cache@v2
147 - name: just test-riscv64
148 run: nix develop --command just test-riscv64