gitlab-ci: Add build configs.
Define builds for gitlab's continuous integration runners so we some feedback on versions of the code hosted there, particularly https://gitlab.xiph.org/xiph/flac. Build with GNU Autotools, with CMake+ninja, and verify the Makefile.lite build. This uses the same Debian-based docker.io/library/gcc:9 container image we use for most of the codec projects. That container doesn't specify an unprivileged user so that we can install packages. However, some of flac's file-creation tests must be run as an unprivileged user who owns the source tree. We therefore create a user account and use `su` to run the tests. In the case of the autotools job, `make distcheck` unpacks the packaged source, so this takes care of ownership. In the case of the other jobs, we must `chown` the entire checkout and complete the build as the unprivileged user. Another way to address this would be to define a custom container image with the prerequisites installed before switching to an unprivileged user for the entire build. The current approach was simpler to get working.
This commit is contained in:
parent
bab58c374f
commit
b7a4402aeb
53
.gitlab-ci.yml
Normal file
53
.gitlab-ci.yml
Normal file
@ -0,0 +1,53 @@
|
||||
default:
|
||||
tags:
|
||||
- docker
|
||||
# Image from https://hub.docker.com/_/gcc/ based on Debian
|
||||
image: gcc:9
|
||||
|
||||
autotools:
|
||||
stage: build
|
||||
before_script:
|
||||
- apt-get update &&
|
||||
apt-get install -y libogg-dev
|
||||
libtool-bin gettext zip
|
||||
doxygen graphviz
|
||||
# Create an unpriviledged user, required for tests.
|
||||
- adduser --disabled-password --gecos "Gitlab CI" flac
|
||||
script:
|
||||
- ./autogen.sh
|
||||
- ./configure
|
||||
- make
|
||||
- su -c 'make distcheck' flac
|
||||
|
||||
cmake:
|
||||
stage: build
|
||||
before_script:
|
||||
- apt-get update &&
|
||||
apt-get install -y libogg-dev
|
||||
cmake ninja-build
|
||||
doxygen graphviz
|
||||
# Create an unpriviledged user, required for tests.
|
||||
- adduser --disabled-password --gecos "Gitlab CI" flac
|
||||
script:
|
||||
- mkdir _build
|
||||
- cmake -S . -B _build -G "Ninja" -DCMAKE_BUILD_TYPE=Release
|
||||
- chown -R flac .
|
||||
- su -c 'cmake --build _build' flac
|
||||
- su -c 'cd _build && ctest -V' flac
|
||||
|
||||
makefile:
|
||||
stage: build
|
||||
before_script:
|
||||
- apt-get update &&
|
||||
apt-get install -y libogg-dev
|
||||
# Create an unpriviledged user, required for tests.
|
||||
- adduser --disabled-password --gecos "Gitlab CI" flac
|
||||
script:
|
||||
# The makefile doesn't create the `objs` tree it expects to use.
|
||||
- mkdir -p objs/release/lib
|
||||
- mkdir -p objs/release/bin
|
||||
- mkdir -p objs/debug/lib
|
||||
- mkdir -p objs/debug/bin
|
||||
- chown -R flac .
|
||||
- su -c 'make -f Makefile.lite' flac
|
||||
- su -c 'make -f Makefile.lite test' flac
|
Loading…
Reference in New Issue
Block a user