forked from meebey/smuxi
-
Notifications
You must be signed in to change notification settings - Fork 0
359 lines (347 loc) · 12.7 KB
/
auto-ci-builds.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
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
name: auto-ci-builds
on:
- push
- pull_request
jobs:
build_macOS-latest:
runs-on: macOS-latest
steps:
- uses: actions/checkout@v1
- name: install build dependencies
run: |
./build/install-deps-macos.sh
- name: check mono version
run: |
mono --version
- name: run autogen
run: |
./autogen.sh
- name: build
run: |
make
# TODO:
# macOS_tests_unit:
# runs-on: macOS-latest
# steps:
# - uses: actions/checkout@v1
# - name: Run unit test
# run: |
# ./build/install-deps-macos.sh
# ./autogen.sh && make && make check
#
build_Ubuntu-latest:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: install build dependencies from debian/control
run: |
echo "Detected APT sources:"
grep deb /etc/apt/sources.list /etc/apt/sources.list.d/* | grep -v ":#"
sudo apt update > /dev/null
sudo apt install --yes devscripts equivs > /dev/null
sudo mk-build-deps --install debian/control > /dev/null
sudo apt install --yes ./smuxi-build-deps_*.deb
- name: check mono version
run: |
mono --version
- name: autogen and configure
run: |
./autogen.sh
- name: compile with make
run: |
make
- name: clean with make
run: |
make clean
- name: reduce compiler warning level
run: |
# reduce the compiler warning level for less noisy builds (xbuild is the 2nd pass anyway)
find . -name "*.csproj" -exec sed 's!<WarningLevel>[0-9]</WarningLevel>!<WarningLevel>0</WarningLevel>!' -i {} \;
- name: compile with xbuild (debug profile)
run: |
xbuild /p:Configuration=Debug src/smuxi.sln
- name: clean with xbuild (debug profile)
run: |
xbuild /p:Configuration=Debug /t:Clean src/smuxi.sln
- name: compile with xbuild (release profile)
run: |
xbuild /p:Configuration=Release src/smuxi.sln
- name: clean with xbuild (release profile)
run: |
xbuild /p:Configuration=Release /t:Clean src/smuxi.sln
- name: run tests
run: |
sudo apt install --yes nunit-console
make test
# Mono 5.18.x ships with:
# - Debian 10 (buster)
build_Mono-5_18: # lowest supported Mono version as defined in configure.ac
runs-on: ubuntu-latest
container: mono:5.18
steps:
- uses: actions/checkout@v1
# the official Mono container doesn't have sudo and https support for
# APT pre-installed
- name: install apt-transport-https and sudo
run: |
echo "Current APT sources:"
grep deb /etc/apt/sources.list /etc/apt/sources.list.d/* | grep -v ":#"
echo "The Debian stretch archived was moved to archive.debian.org, patching sources.list..."
sed 's/deb.debian.org/archive.debian.org/' -i /etc/apt/sources.list
echo "Removing security.debian.org..."
grep -v 'security.debian.org' /etc/apt/sources.list > /etc/apt/sources.list.new
cp /etc/apt/sources.list.new /etc/apt/sources.list
echo "Removing stretch/updates and stretch-updates..."
grep -v 'stretch/updates' /etc/apt/sources.list > /etc/apt/sources.list.new
cp /etc/apt/sources.list.new /etc/apt/sources.list
grep -v 'stretch-updates' /etc/apt/sources.list > /etc/apt/sources.list.new
cp /etc/apt/sources.list.new /etc/apt/sources.list
echo "New APT sources:"
grep deb /etc/apt/sources.list /etc/apt/sources.list.d/* | grep -v ":#"
apt update > /dev/null || true # ignore exit code so mixed HTTP and
# HTTPS source lines won't fail before https support is intalled below
apt install --yes apt-transport-https
apt update
apt install --yes sudo
- name: install build dependencies from debian/control
run: |
sudo apt install --yes devscripts equivs > /dev/null
#sudo mk-build-deps --install debian/control
# "mk-build-deps --install" fails to install all packages, while apt can
# install all packages without issues, so we skip "--install" here
sudo mk-build-deps debian/control
dpkg --info ./smuxi-build-deps_*.deb
sudo apt install --yes ./smuxi-build-deps_*.deb
- name: check mono version
run: |
mono --version
- name: autogen and configure
run: |
./autogen.sh
- name: build
run: |
make
# Mono 6.8.0.105 ships with:
# - Ubuntu 20.04 LTS (focal)
# - Ubuntu 22.04 LTS (jammy)
# - Ubuntu 23.04 LTS (lunar)
# - Debian 11 (bullseye)
# - Debian 12 (bookworm)
build_Mono-6_8_0_105:
# Upstream's docker repo does not contain 6.8.105, just 6.8.0.96 and 6.8.0.123,
# thus we rely on the Mono version shipped with Ubuntu 22.04 instead
runs-on: ubuntu-22.04
# GitHub installs/ships Mono 6.12.x as part of their ubuntu-22.04 VM images,
# thus we have to use a container to use the Mono version that is actually from the Ubuntu archive
container: ubuntu:22.04
steps:
- uses: actions/checkout@v1
- name: detect APT sources
run: |
echo "Detected APT sources:"
grep deb /etc/apt/sources.list /etc/apt/sources.list.d/* | grep -v ":#"
- name: install sudo
run: |
apt update
apt install --yes sudo
# workaround for https://github.com/actions/runner/issues/2033
- name: workaround failing git ownership check
run: |
sudo apt install --yes git > /dev/null
git config --global --add safe.directory '*'
- name: install build dependencies from debian/control
run: |
DEBIAN_FRONTEND=noninteractive # prevent that package configuration waits for user input
export DEBIAN_FRONTEND
sudo -E apt install --yes devscripts equivs > /dev/null
sudo mk-build-deps debian/control
dpkg --info ./smuxi-build-deps_*.deb
sudo -E apt install --yes ./smuxi-build-deps_*.deb
- name: check mono version
run: |
mono --version
- name: autogen and configure
run: |
./autogen.sh
- name: build
run: |
make
# Mono 6.12.x does not ship with any known Ubuntu or Debian versions
build_Mono-6_12: # latest Mono stable LTS version
runs-on: ubuntu-latest
container: mono:6.12.0.182
steps:
- uses: actions/checkout@v1
# the official Mono container doesn't have sudo and https support for
# APT pre-installed
- name: install apt-transport-https and sudo
run: |
echo "Detected APT sources:"
grep deb /etc/apt/sources.list /etc/apt/sources.list.d/* | grep -v ":#"
apt update > /dev/null || true # ignore exit code so mixed HTTP and
# HTTPS source lines won't fail before https support is intalled below
apt install --yes apt-transport-https > /dev/null
apt update > /dev/null
apt install --yes sudo > /dev/null
# workaround for https://github.com/actions/runner/issues/2033
- name: workaround failing git ownership check
run: |
sudo apt install --yes git > /dev/null
git config --global --add safe.directory '*'
- name: install build dependencies from debian/control
run: |
sudo apt install --yes devscripts equivs > /dev/null
#sudo mk-build-deps --install debian/control
# "mk-build-deps --install" fails to install all packages, while apt can
# install all packages without issues, so we skip "--install" here
sudo mk-build-deps debian/control
dpkg --info ./smuxi-build-deps_*.deb
sudo apt install --yes ./smuxi-build-deps_*.deb
- name: check mono version
run: |
mono --version
- name: autogen and configure
run: |
./autogen.sh
- name: build
run: |
make
build_Mono-latest: # latest Mono version
runs-on: ubuntu-latest
container: mono:latest
steps:
- uses: actions/checkout@v1
# the official Mono container doesn't have sudo and https support for
# APT pre-installed
- name: install apt-transport-https and sudo
run: |
echo "Detected APT sources:"
grep deb /etc/apt/sources.list /etc/apt/sources.list.d/* | grep -v ":#"
apt update > /dev/null || true # ignore exit code so mixed HTTP and
# HTTPS source lines won't fail before https support is intalled below
apt install --yes apt-transport-https > /dev/null
apt update > /dev/null
apt install --yes sudo > /dev/null
# workaround for https://github.com/actions/runner/issues/2033
- name: workaround failing git ownership check
run: |
sudo apt install --yes git > /dev/null
git config --global --add safe.directory '*'
- name: install build dependencies from debian/control
run: |
sudo apt install --yes devscripts equivs > /dev/null
#sudo mk-build-deps --install debian/control
# "mk-build-deps --install" fails to install all packages, while apt can
# install all packages without issues, so we skip "--install" here
sudo mk-build-deps debian/control
dpkg --info ./smuxi-build-deps_*.deb
sudo apt install --yes ./smuxi-build-deps_*.deb
- name: check mono version
run: |
mono --version
- name: autogen and configure
run: |
./autogen.sh
- name: build
run: |
make
build_debs_Debian-stable:
runs-on: ubuntu-latest
container: debian:stable
steps:
- uses: actions/checkout@v1
- name: check Debian version
run: |
cat /etc/debian_version
- name: install sudo and moreutils (for chronic)
run: |
echo "Detected APT sources:"
grep deb /etc/apt/sources.list /etc/apt/sources.list.d/* | grep -v ":#"
apt update
apt install --yes sudo moreutils
# we can't use debian/control to satisfy the build dependencies on Debian
# 12 (bookwarm) as log4net was removed from the archive. Thus we rely on the
# bundled libraries instead.
#- name: install build dependencies from debian/control
# run: |
# sudo apt install --yes devscripts equivs
# sudo mk-build-deps debian/control
# dpkg --info ./smuxi-build-deps_*.deb
# sudo apt install --yes ./smuxi-build-deps_*.deb
- name: install build dependencies
run: |
sudo apt install --yes build-essential git autoconf automake intltool mono-devel mono-xbuild libnini-cil-dev libgtk2.0-cil-dev libdbus2.0-cil-dev libdbus-glib2.0-cil-dev libstfl-dev lsb-release
- name: check mono version
run: |
mono --version
- name: workaround failing git ownership check
run: |
sudo apt install --yes git > /dev/null
git config --global --add safe.directory '*'
- name: prepare build
run: |
./autogen.sh
- name: install tools for building debs
run: |
sudo apt install --yes build-essential debhelper cli-common-dev
- name: build debs
run: |
dpkg-buildpackage -us -uc -rfakeroot --build=binary --no-check-builddeps
build_nix_NixOS-stable-23_11:
runs-on: ubuntu-latest
container: nixos/nix
steps:
- uses: actions/checkout@v1
- name: check Nix version
run: |
nix --version
nix-channel --list
- name: switch to NixOS stable channel
run: |
nix-channel --remove nixos
nix-channel --remove nixpkgs
nix-channel --add https://nixos.org/channels/nixos-23.11 nixos
nix-channel --add https://nixos.org/channels/nixos-23.11 nixpkgs
- name: list and update channel
run: |
nix-channel --list
nix-channel --update
- name: build nix pkg
run: |
nix-build --expr 'let pkgs = import <nixpkgs> { }; in pkgs.callPackage ./nix/default.nix { gitBranch = "${{ github.ref_name }}"; }'
build_nix_NixOS-unstable:
runs-on: ubuntu-latest
container: nixos/nix
steps:
- uses: actions/checkout@v1
- name: check Nix version
run: |
nix --version
nix-channel --list
- name: update channel
run: |
nix-channel --update
- name: build nix pkg
run: |
nix-build --expr 'let pkgs = import <nixpkgs> { }; in pkgs.callPackage ./nix/default.nix { gitBranch = "${{ github.ref_name }}"; }'
snap_build:
needs: build_Mono-6_8_0_105
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v1
- name: Install snap tools
run: |
sudo apt update --yes
./build/install-snapcraft.sh
- name: Generate snap package
run: |
sudo ./build/snap-build.sh
- name: Test snap package
run: |
sudo snap install --dangerous *.snap
#TODO: test with `smuxi --version`?
- uses: actions/upload-artifact@v3
name: Upload snap package as artifact
with:
name: snap
path: ./*.snap