-
Notifications
You must be signed in to change notification settings - Fork 21
140 lines (125 loc) · 4.28 KB
/
linux.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
name: CI - Linux - x86_64
on:
push:
branches:
- master
- v*
pull_request:
jobs:
build_and_test:
strategy:
fail-fast: false
matrix:
name: [MSRV, stable, nightly]
include:
- name: MSRV
version: 1.65.0
- name: stable
version: stable
- name: nightly
version: nightly
name: Test ${{ matrix.name }} - x86_64-unknown-linux-gnu
runs-on: ubuntu-latest
steps:
- name: Install Dependencies
run: sudo apt-get update; sudo apt-get install libarchive-dev protobuf-compiler socat
- name: Checkout sources
uses: actions/checkout@v2
- name: Install ${{ matrix.version }}
uses: actions-rs/toolchain@v1
with:
toolchain: ${{ matrix.version }}-x86_64-unknown-linux-gnu
profile: minimal
override: true
- name: Install grcov tool
if: matrix.name == 'nightly'
uses: actions-rs/install@v0.1
with:
crate: grcov
use-tool-cache: true
- name: Install cargo bloat tool
if: matrix.name == 'MSRV' && 0
uses: actions-rs/install@v0.1
with:
crate: cargo-bloat
use-tool-cache: true
- name: Install cargo tree tool
if: matrix.name == 'MSRV'
uses: actions-rs/install@v0.1
with:
crate: cargo-tree
use-tool-cache: true
- name: Cache build contents
uses: actions/cache@v2
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ matrix.version }}-x86_64-unknown-linux-gnu-cargo-build-trimmed-${{ hashFiles('**/Cargo.lock') }}
- name: Check build
uses: actions-rs/cargo@v1
with:
command: check
args: --locked --release --all --bins --examples --tests --all-features
- name: Tests
uses: actions-rs/cargo@v1
timeout-minutes: 10
with:
command: test
args: --locked --release --all --all-features --no-fail-fast -- --nocapture
- name: Run listener test
run: |
export UH_LISTENER_TEST=updatehub-statechange.sock
cargo run --example listener &
while [ ! -S "$UH_LISTENER_TEST" ]; do
sleep 1
done
if [[ "$(echo "download" | socat - UNIX-CONNECT:updatehub-statechange.sock)" != "cancel" ]]; then
echo "Unexpected download response"
exit 1
fi
if [[ "$(echo "install" | socat - UNIX-CONNECT:updatehub-statechange.sock)" != "" ]]; then
echo "Unexpected install response"
exit 2
fi
if [[ "$(echo "error" | socat - UNIX-CONNECT:updatehub-statechange.sock)" != "" ]]; then
echo "Unexpected error response"
exit 3
fi
if [[ "$(echo "reboot" | socat - UNIX-CONNECT:updatehub-statechange.sock)" != "" ]]; then
echo "Unexpected reboot response"
exit 4
fi
- name: Run cargo bloat
if: matrix.name == 'MSRV' && 0
uses: orf/cargo-bloat-action@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
bloat_args: --release --package updatehub
- name: Run cargo test with coverage
if: matrix.name == 'nightly'
uses: actions-rs/cargo@v1
with:
command: test
args: --locked --all --all-features --no-fail-fast -- --nocapture
env:
CARGO_INCREMENTAL: '0'
RUSTFLAGS: '-Zprofile -Zpanic_abort_tests -Ccodegen-units=1 -Cinline-threshold=0 -Clink-dead-code -Coverflow-checks=off -Cpanic=abort'
- id: coverage
if: matrix.name == 'nightly'
uses: actions-rs/grcov@master
- name: Coveralls upload
if: matrix.name == 'nightly'
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
path-to-lcov: ${{ steps.coverage.outputs.report }}
- name: Clear the coverage files from cache
if: matrix.name == 'nightly'
run: |
find target/ -name "*.gcda" -exec rm {} +
- name: Clear the cargo caches
run: |
cargo +stable install cargo-cache --no-default-features --features ci-autoclean
cargo-cache