-
Notifications
You must be signed in to change notification settings - Fork 0
139 lines (135 loc) · 4.15 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
# 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 on macOS
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 (macOS)
if: matrix.os == 'macos-latest'
shell: bash
run: |
export DEV_SHELL=${{ DEV_SHELL_MACOS }}
- name: Setup Devshell Command (linux)
if: matrix.os == 'ubuntu-latest'
shell: bash
run: |
export DEV_SHELL=${{ DEV_SHELL_LINUX }}
- name: Restore Nix Cache
uses: actions/cache@v3
if: matrix.os != 'macos-latest'
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: |
$(DEV_SHELL)
- name: Build Tests
shell: bash
run: |
$(DEV_SHELL) --command cargo test --all-targets --no-run
- name: Run Tests
shell: bash
run: |
$(DEV_SHELL) --command cargo test --all-targets -- --nocapture
# This job runs the linter.
# lint:
# name: "Lint"
# 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
#
# # This job checks the code formatting.
# 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