summaryrefslogtreecommitdiffstats
path: root/.gitlab-ci.yml
diff options
context:
space:
mode:
Diffstat (limited to '.gitlab-ci.yml')
-rw-r--r--.gitlab-ci.yml129
1 files changed, 129 insertions, 0 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000..96b6610
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,129 @@
+# The build has two stages. The 'container' stage is used to build a Docker
+# container and push it to the project's container registry on fd.o GitLab.
+# This step is only run when the tag for the container changes, else it is
+# effectively a no-op. All of this infrastructure is inherited from the
+# wayland/ci-templates repository which is the recommended way to set up CI
+# infrastructure on fd.o GitLab.
+#
+# Once the container stage is done, we move on to the 'build' stage where we
+# run an autotools and meson build in parallel. Currently, tests are also run
+# as part of the build stage as there doesn't seem to be significant value to
+# splitting the stages at the moment.
+
+stages:
+ - container
+ - build
+
+variables:
+ # Update this tag when you want to trigger a rebuild the container in which
+ # CI runs, for example when adding new packages to FDO_DISTRIBUTION_PACKAGES.
+ # The tag is an arbitrary string that identifies the exact container
+ # contents.
+ FDO_DISTRIBUTION_TAG: '2020-03-07-01'
+ FDO_DISTRIBUTION_VERSION: '18.04'
+ FDO_UPSTREAM_REPO: 'pulseaudio/pulseaudio'
+ UBUNTU_IMAGE: "$CI_REGISTRY_IMAGE/ubuntu/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG"
+
+include:
+ # We pull templates from master to avoid the overhead of periodically
+ # scanning for changes upstream. This does means builds might occasionally
+ # break due to upstream changing things, so if you see unexpected build
+ # failures, this might be one cause.
+ - project: 'wayland/ci-templates'
+ ref: 'master'
+ file: '/templates/ubuntu.yml'
+
+build-container:
+ extends: .fdo.container-ifnot-exists@ubuntu
+ stage: container
+ variables:
+ GIT_STRATEGY: none # no need to pull the whole tree for rebuilding the image
+
+ # Remember to update FDO_DISTRIBUTION_TAG when modifying this package list!
+ # Otherwise the changes won't have effect since an old container image will
+ # be used.
+ FDO_DISTRIBUTION_PACKAGES: >-
+ autoconf
+ automake
+ autopoint
+ bash-completion
+ check
+ curl
+ 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
+ libtool
+ libudev-dev
+ libwebrtc-audio-processing-dev
+ libwrap0-dev
+ libx11-xcb-dev
+ libxcb1-dev
+ libxml-parser-perl
+ libxml2-utils
+ libxtst-dev
+ make
+ ninja-build
+ pkg-config
+ python3-setuptools
+ systemd
+ wget
+
+build-autotools:
+ stage: build
+ image: $UBUNTU_IMAGE
+ 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/
+
+build-meson:
+ stage: build
+ image: $UBUNTU_IMAGE
+ script:
+ # Install meson
+ - wget -q https://github.com/mesonbuild/meson/releases/download/0.50.0/meson-0.50.0.tar.gz
+ - tar -xf meson-0.50.0.tar.gz
+ - cd meson-0.50.0
+ - python3 setup.py install
+ - cd ..
+ # Do the actual build
+ - meson build
+ - cd build
+ - ninja
+ - ninja test
+ - ninja test-daemon
+ artifacts:
+ paths:
+ - build/