gitlab: Add support for GitLab CI
authorArun Raghavan <arun@arunraghavan.net>
Sat, 30 Jun 2018 06:33:30 +0000 (12:03 +0530)
committerArun Raghavan <arun@arunraghavan.net>
Mon, 27 Aug 2018 10:35:04 +0000 (16:05 +0530)
This adds a Dockerfile to generate a Docker image with the required
dependencies on top of the standard Ubuntu 18.04 image. The Gitlab CI
then runs the PulseAudio build within this image.

.gitlab-ci.yml [new file with mode: 0644]
scripts/Dockerfile [new file with mode: 0644]

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644 (file)
index 0000000..b253960
--- /dev/null
@@ -0,0 +1,18 @@
+image: registry.freedesktop.org/pulseaudio/pulseaudio/ubuntu:18.04
+
+build:
+  stage: build
+  script:
+    - export MAKEFLAGS="-j$(nproc)"
+    - NOCONFIGURE=1 ./bootstrap.sh
+    - mkdir build
+    - cd build
+    - ../configure --localstatedir=/var
+    - make
+    - make check
+    - make check-daemon
+    - ulimit -c 0 # don't dump core files on tests that are supposed to assert
+    - make distcheck
+  artifacts:
+    paths:
+      - build/
diff --git a/scripts/Dockerfile b/scripts/Dockerfile
new file mode 100644 (file)
index 0000000..aa4ae67
--- /dev/null
@@ -0,0 +1,54 @@
+# Start with current Ubuntu LTS
+FROM ubuntu:18.04
+
+# Add a PulseAudio's dependencies
+RUN apt-get update && apt-get install -y \
+    autoconf \
+    automake \
+    autopoint \
+    bash-completion \
+    check \
+    dbus-x11 \
+    g++ \
+    gcc \
+    gettext \
+    git-core \
+    libasound2-dev \
+    libasyncns-dev \
+    libavahi-client-dev \
+    libbluetooth-dev \
+    libcap-dev \
+    libfftw3-dev \
+    libglib2.0-dev \
+    libgtk-3-dev \
+    libice-dev \
+    libjack-dev \
+    liblircclient-dev \
+    libltdl-dev \
+    liborc-0.4-dev \
+    libsbc-dev \
+    libsndfile1-dev \
+    libsoxr-dev \
+    libspeexdsp-dev \
+    libssl-dev \
+    libsystemd-dev \
+    libtdb-dev \
+    libudev-dev \
+    libwebrtc-audio-processing-dev \
+    libwrap0-dev \
+    libx11-xcb-dev \
+    libxcb1-dev \
+    libxml-parser-perl \
+    libxtst-dev \
+    make \
+    systemd
+
+# Add a user and set as default for the build. This is safer, in general, and
+# allows us to avoid having to explicitly allow running as root in the
+# check-daemon stage.
+RUN groupadd -g 1000 a_group && \
+    useradd a_user -u 1000 -g a_group -m
+USER a_user:a_group
+
+# And make sure subsequent commands are run in the user's home directory
+WORKDIR /home/a_user