-
Notifications
You must be signed in to change notification settings - Fork 0
189 lines (163 loc) · 5.63 KB
/
tests.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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
name: tests
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
container:
image: ghcr.io/rauc/rauc/rauc-ci:latest
# allow mounting and devtmpfs in the container
options: --user=root --privileged -v /dev:/dev
steps:
- name: Inspect environment
run: |
whoami
gcc --version
apt-get update
DEBIAN_FRONTEND='noninteractive' apt-get install -qy meson
- uses: actions/checkout@v3
- name: Test with service and gpt
run: |
rm -rf build/
meson setup -Dservice=true -Dgpt=enabled -Db_coverage=true -Dwerror=true build
meson configure build
meson compile -C build
./qemu-test
lcov --directory . --capture --output-file "service.info"
- name: Test without service and gpt
run: |
rm -rf build/
meson setup -Dservice=false -Dgpt=enabled -Db_coverage=true -Dwerror=true build
meson configure build
meson compile -C build
./qemu-test
lcov --directory . --capture --output-file "noservice.info"
- uses: codecov/codecov-action@v3
with:
files: service.info,noservice.info
verbose: true
- name: Build documentation
run: |
meson compile doc -C build
- name: Build CGI example
run: |
cd contrib/cgi
./autogen.sh
./configure CFLAGS=-Werror
make clean
make -j4
make -j4 distcheck
- name: Show system status
if: ${{ failure() }}
run: |
dmesg | tail -n 100
mount || true
losetup || true
dmsetup table || true
dmsetup targets || true
- name: Show logs
if: ${{ failure() }}
run: |
cat build/meson-logs/testlog.txt || true
dmesg | tail -n 100
cross:
runs-on: ubuntu-latest
strategy:
matrix:
architecture:
- armhf
- arm64
- armel
- i386
steps:
- uses: actions/checkout@v3
- name: Prepare ${{ matrix.architecture }} container
run: |
sudo apt-get update
sudo DEBIAN_FRONTEND='noninteractive' apt-get install -qy qemu-user-static
docker run --name cross -di -v "$PWD":/home -w /home multiarch/debian-debootstrap:${{ matrix.architecture }}-bullseye bash
docker logs cross
docker exec -i cross uname -a
docker exec -i cross apt-get update
docker exec -e DEBIAN_FRONTEND='noninteractive' -i cross apt-get install -qy build-essential meson libtool libglib2.0-dev libcurl3-dev libssl-dev libjson-glib-dev libdbus-1-dev libfdisk-dev libnl-genl-3-dev squashfs-tools
- name: Build
run: |
docker exec -i cross whoami
docker exec -i cross meson setup -Dgpt=enabled -Dwerror=true build
docker exec -i cross meson compile -C build
# don't run 'meson test' here, as we don't have full access to the kernel (mount, loopback, dm)
- name: Show logs
if: ${{ failure() }}
run: |
cat build/meson-logs/testlog.txt || true
stable:
runs-on: ubuntu-latest
strategy:
matrix:
release:
- "ubuntu:18.04"
- "ubuntu:20.04"
- "ubuntu:22.04"
- "debian:buster"
- "debian:bullseye"
- "debian:testing"
builder:
- "meson"
- "automake"
exclude:
- release: "ubuntu:18.04"
builder: "meson"
- release: "debian:buster"
builder: "meson"
steps:
- uses: actions/checkout@v3
- name: Prepare ${{ matrix.release }} container for ${{ matrix.builder }} build
run: |
docker run --name stable -di -v "$PWD":/home -w /home ${{ matrix.release }} bash
docker exec -i stable uname -a
docker exec -i stable apt-get update
docker exec -e DEBIAN_FRONTEND='noninteractive' -i stable apt-get install -qy build-essential ${{ matrix.builder }} libtool libglib2.0-dev libcurl3-dev libssl-dev libjson-glib-dev libdbus-1-dev libfdisk-dev libnl-genl-3-dev squashfs-tools
- name: Patch & prepare
run: |
docker exec -i stable whoami
docker exec -i stable uname -a
docker exec -i stable find .github/workflows/patches/${{ matrix.release }}/ -type f -name "*.patch" -print0 | sort -z | xargs -t -n 1 -r -0 patch -p1 -f -i
- name: Configure (meson)
if: ${{ matrix.builder == 'meson' }}
run: |
docker exec -i stable meson setup -Dgpt=disabled -Dwerror=true build
- name: Configure (automake)
if: ${{ matrix.builder == 'automake' }}
run: |
docker exec -i stable ./autogen.sh
docker exec -i stable ./configure --disable-gpt CFLAGS='-Werror -Wno-error=deprecated-declarations'
- name: Build (meson)
if: ${{ matrix.builder == 'meson' }}
run: |
docker exec -i stable ninja -C build
- name: Build (automake)
if: ${{ matrix.builder == 'automake' }}
run: |
docker exec -i stable make TESTS= check
- name: Show logs
if: ${{ failure() }}
run: |
cat build/meson-logs/testlog.txt || true
cat config.log || true
cat test/*.log || true
cat test-suite.log || true
cat rauc-*/_build/sub/test-suite.log || true
uncrustify:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
- name: Install codespell
run: |
sudo apt-get update
sudo DEBIAN_FRONTEND='noninteractive' apt-get install -qy codespell
- name: Run uncrustify check
run: |
./uncrustify.sh
git diff --exit-code
- name: Run codespell check
run: |
codespell -L parms,cas -S 'openssl-ca,build,*.log' src include test docs