-
Notifications
You must be signed in to change notification settings - Fork 0
146 lines (142 loc) · 4.43 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
134
135
136
137
138
139
140
141
142
143
144
145
146
# Metadata for the actions workflow
name: CI
on:
push:
branches: ["main"]
pull_request:
branches: ["*"]
# Environment variables that will be set on all runners
env:
DEV_SHELL_LINUX: "nix --store ~/nix_store develop '.#ci'"
DEV_SHELL_MACOS: "nix develop '.#ci'"
CARGO_TERM_COLOR: always # Always colour Cargo's output.
CARGO_INCREMENTAL: 0 # Always run without incremental builds on CI.
CARGO_PROFILE_DEV_DEBUG: 0 # Don't embed debug info even though the build is a dev build.
# Configuration for individual jobs
jobs:
# This job is responsible for running the unit and integration tests
test:
name: "Test"
strategy:
fail-fast: false
matrix:
os: ["ubuntu-latest", "macos-latest"]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout Code
uses: actions/checkout@v3
- name: Install Lix
shell: "bash"
run: |
curl -sSf -L https://install.lix.systems/lix | sh -s -- install --no-confirm
- name: Setup Devshell Command
shell: "bash"
run: |
if [ "$RUNNER_OS" == "Linux" ]; then
echo "DEV_SHELL=${{ env.DEV_SHELL_LINUX }}" >> $GITHUB_ENV
elif [ "$RUNNER_OS" == "macOS" ]; then
echo "DEV_SHELL=${{ env.DEV_SHELL_MACOS }}" >> $GITHUB_ENV
else
exit 1
fi
- name: Restore Nix Cache
uses: actions/cache@v3
if: runner.os != 'macOS'
continue-on-error: true
with:
path: |
~/nix_store
key: nix-${{ hashFiles('**/flake.lock') }}-${{ matrix.os }}
- name: Restore Rust Cache
uses: actions/cache@v3
continue-on-error: true
with:
path: |
target/
key: rust-${{ hashFiles('**/Cargo.lock') }}-${{ matrix.os }}
- name: Build Lix Dependencies
shell: "bash"
run: |
eval "$DEV_SHELL --command which cc"
- name: Build Tests
shell: "bash"
run: |
eval "$DEV_SHELL --command cargo test --all-targets --no-run"
- name: Run Tests
shell: "bash"
run: |
eval "$DEV_SHELL --command cargo test --all-targets -- --nocapture"
# This job runs the linter.
lint:
name: "Lint Code"
runs-on: "ubuntu-latest"
steps:
- name: Checkout Code
uses: actions/checkout@v3
- name: Install Lix
shell: bash
run: |
curl -sSf -L https://install.lix.systems/lix | sh -s -- install --no-confirm
- name: Restore Nix Cache
uses: actions/cache@v3
continue-on-error: true
with:
path: |
~/nix_store
key: nix-${{ hashFiles('**/flake.lock') }}-ubuntu-latest
- name: Restore Rust Cache
uses: actions/cache@v3
continue-on-error: true
with:
path: |
target/
key: rust-${{ hashFiles('**/Cargo.lock') }}-ubuntu-latest
- name: Build Lix Dependencies
shell: bash
run: |
${{ env.DEV_SHELL_LINUX }}
- name: Lint Code
shell: bash
run: |
${{ env.DEV_SHELL_LINUX }} --command cargo clippy --all-targets --all-features
# This job checks the formatting of the code and other artifacts.
formatting:
name: "Check Formatting"
runs-on: "ubuntu-latest"
steps:
- name: Checkout Code
uses: actions/checkout@v3
- name: Install Lix
shell: bash
run: |
curl -sSf -L https://install.lix.systems/lix | sh -s -- install --no-confirm
- name: Restore Nix Cache
uses: actions/cache@v3
continue-on-error: true
with:
path: |
~/nix_store
key: nix-${{ hashFiles('**/flake.lock') }}-ubuntu-latest
- name: Restore Rust Cache
uses: actions/cache@v3
continue-on-error: true
with:
path: |
target/
key: rust-${{ hashFiles('**/Cargo.lock') }}-ubuntu-latest
- name: Build Lix Dependencies
shell: bash
run: |
${{ env.DEV_SHELL_LINUX }}
- name: Check Formatting
shell: bash
run: |
${{ env.DEV_SHELL_LINUX }} --command cargo fmt --all -- --check
- name: Install Node Deps
shell: bash
run: |
${{ env.DEV_SHELL_LINUX }} --command npm install
- name: Lint Documentation
shell: bash
run: |
${{ env.DEV_SHELL_LINUX }} --command npx prettier --check .