-
Notifications
You must be signed in to change notification settings - Fork 135
141 lines (127 loc) · 4.18 KB
/
test.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
name: "Test Build"
on:
push:
branches:
- main
paths:
- ".github/**/*"
- "**.rs"
- "**/Cargo.toml"
- "**/Cargo.lock"
pull_request:
branches:
- main
paths:
- ".github/**/*"
- "**.rs"
- "**/Cargo.toml"
- "**/Cargo.lock"
jobs:
publish:
name: Test on ${{ matrix.os }} for ${{ matrix.target }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
target:
- x86_64-unknown-linux-gnu
- aarch64-unknown-linux-musl
- armv7-unknown-linux-musleabihf
- arm-unknown-linux-musleabihf
- x86_64-pc-windows-msvc
- x86_64-apple-darwin
- aarch64-apple-darwin
include:
- os: ubuntu-latest
target: x86_64-unknown-linux-gnu
cross: false
- os: ubuntu-latest
target: aarch64-unknown-linux-musl
cross: true
- os: ubuntu-latest
target: armv7-unknown-linux-musleabihf
cross: true
- os: ubuntu-latest
target: arm-unknown-linux-musleabihf
cross: true
- os: windows-latest
target: x86_64-pc-windows-msvc
cross: false
- os: macos-latest
target: x86_64-apple-darwin
cross: false
- os: macos-latest
target: aarch64-apple-darwin
cross: true
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Setup Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
components: llvm-tools-preview
targets: ${{ matrix.target }}
- name: Install cargo-nextest
uses: taiki-e/install-action@v2
with:
tool: nextest
- name: Install cargo-cross
uses: taiki-e/install-action@v2
with:
tool: cross
if: ${{ matrix.cross }}
- uses: actions/cache@v3
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-${{ matrix.target }}-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-${{ matrix.target }}-
# ----- Non-Cross path
- name: cargo build
run: cargo build --target=${{ matrix.target }}
if: ${{ !matrix.cross }}
- name: cargo test
run: cargo nextest run --workspace --target=${{ matrix.target }}
env:
NEXTEST_PROFILE: ci # defined in .config/nextest.toml
if: ${{ !matrix.cross }}
# ----- Cross path
#- name: Install qemu
# run: apt-get install --assume-yes binfmt-support qemu-user-static qemu-user
# if: ${{ matrix.cross }}
- name: cargo build
run: cross build --target=${{ matrix.target }}
if: ${{ matrix.cross }}
# We don't do automated testing for cross builds yet.
# - They don't work in the CI. I have yet to figure out why things aren't set up properly.
# - The tests run way to slow and all kinds of race conditions are triggered.
# Until we find a way to run time related tests in an ultra slow environment, this needs to be postponed.
#- name: cargo test
# run: cross test run --workspace --target=${{ matrix.target }}
# env:
# NEXTEST_PROFILE: ci # defined in .config/nextest.toml
# if: ${{ matrix.cross }}
# ----- Test result artifacts are used by the test-report.yaml workflow.
- name: upload test results
uses: actions/upload-artifact@v3
if: ${{ !matrix.cross }}
with:
name: Test results (${{ matrix.target }})
path: target/nextest/ci/junit.xml
# the event file (containing the JSON payload for the webhook triggering this
# workflow) is needed to generate test result reports with the correct
# context. See the test-report.yaml workflow for details.
event_file:
name: "Event File"
runs-on: ubuntu-latest
steps:
- name: Upload
uses: actions/upload-artifact@v3
with:
name: Event File
path: ${{ github.event_path }}