github: add build workflow

Signed-off-by: Karel Zak <kzak@redhat.com>
This commit is contained in:
Karel Zak 2021-01-25 16:51:51 +01:00
parent 7b78b571b7
commit 84cccd3eb5
3 changed files with 138 additions and 0 deletions

51
.github/workflows/cibuild-setup-ubuntu.sh vendored Executable file
View File

@ -0,0 +1,51 @@
#!/bin/bash
set -ex
PACKAGES=(
bc
btrfs-tools
dnsutils
libcap-ng-dev
libncursesw5-dev
libpam-dev
libudev-dev
gtk-doc-tools
mdadm
ntp
socat
)
PACKAGES_OPTIONAL=(
libsystemd-daemon-dev
libsystemd-journal-dev
)
COMPILER="${COMPILER:?}"
COMPILER_VERSION="${COMPILER_VERSION:?}"
RELEASE="$(lsb_release -cs)"
bash -c "echo 'deb-src http://archive.ubuntu.com/ubuntu/ $RELEASE main restricted universe multiverse' >>/etc/apt/sources.list"
if [[ "$COMPILER" == clang ]]; then
# Latest LLVM stack deb packages provided by https://apt.llvm.org/
# Following snippet was borrowed from https://apt.llvm.org/llvm.sh
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add -
add-apt-repository -y "deb http://apt.llvm.org/$RELEASE/ llvm-toolchain-$RELEASE-$COMPILER_VERSION main"
PACKAGES+=(clang-$COMPILER_VERSION lldb-$COMPILER_VERSION lld-$COMPILER_VERSION clangd-$COMPILER_VERSION)
elif [[ "$COMPILER" == gcc ]]; then
# Latest gcc stack deb packages provided by
# https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test
add-apt-repository -y ppa:ubuntu-toolchain-r/test
PACKAGES+=(gcc-$COMPILER_VERSION)
else
fatal "Unknown compiler: $COMPILER"
fi
apt-get -y update --fix-missing
apt-get -y build-dep util-linux
apt-get -y install "${PACKAGES[@]}"
apt-get -y install "${PACKAGES_OPTIONAL[@]}" || true
export PATH="$HOME/.local/bin:$PATH"

55
.github/workflows/cibuild.sh vendored Executable file
View File

@ -0,0 +1,55 @@
#!/bin/bash
PHASES=(${@:-CONFIGURE MAKE INSTALL CHECK DISTCHECK})
COMPILER="${COMPILER:?}"
set -ex
for phase in "${PHASES[@]}"; do
case $phase in
CONFIGURE)
opts = "--disable-use-tty-group \
--disable-makeinstall-chown \
--enable-all-programs \
--enable-asan \
--enable-ubsan \
--enable-werror"
if [[ "$COMPILER" == clang ]]; then
opts="$opts --enable-fuzzing-engine"
fi
echo "## CONFIGURE: git-clean"
sudo -E git clean -xdf
echo "## CONFIGURE: autogen.sh"
./autogen.sh
echo "## CONFIGURE: $opts --"
./configure $opts
;;
MAKE)
echo "## MAKE"
make -j V=1
make -j check-programs V=1
;;
INSTALL)
echo "## MAKE INSTALL"
make install DESTDIR=/tmp/dest
;;
CHECK)
echo "## MAKE CHECK"
./tests/run.h --show-diff
;;
DISTCHECK)
echo "## MAKE DISTCHECK"
make distcheck
;;
*)
echo >&2 "Unknown phase '$phase'"
exit 1
esac
done

32
.github/workflows/cibuild.yml vendored Normal file
View File

@ -0,0 +1,32 @@
name: Build test
on:
push:
branches:
- 'cibuild'
paths-ignore:
- 'Documentation/**'
- 'lib*/docs/**'
jobs:
build:
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
env:
- { COMPILER: "gcc", COMPILER_VERSION: "10" }
- { COMPILER: "clang", COMPILER_VERSION: "10" }
env: ${{ matrix.env }}
steps:
- name: Repository checkout
uses: actions/checkout@v1
- name: Ubuntu setup (${{ env.COMPILER }}-${{ env.COMPILER_VERSION }})
run: sudo -E .github/workflows/cibuild-setup-ubuntu.sh
- name: Congure & Make (${{ env.COMPILER }}-${{ env.COMPILER_VERSION }})
run: .github/workflows/cibuild.sh CONFIGURE MAKE
- name: Make install
run: .github/workflows/cibuild.sh INSTALL
- name: Make distcheck
run: .github/workflows/cibuild.sh DISTCHECK
- make: Check
run: sudo -E .github/workflows/cibuild.sh CHECK