diff options
Diffstat (limited to '.gitlab-ci.yml')
-rw-r--r-- | .gitlab-ci.yml | 129 |
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/ |