GitHub-CI/build_debs_Debian-unstable: make job outcome optional #124
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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_debs_Debian-unstable: | |
runs-on: ubuntu-latest | |
container: debian:unstable | |
continue-on-error: true | |
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 | |
- 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: 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: build debs | |
run: | | |
dpkg-buildpackage -us -uc -rfakeroot --build=binary | |
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 }}"; }' |