diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0c00925fc..51feab921 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,7 +1,87 @@ -image: registry.freedesktop.org/pulseaudio/pulseaudio/ubuntu:18.04 +# 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 + UBUNTU_TAG: '2019-11-21-01' + UBUNTU_VERSION: '18.04' + UBUNTU_IMAGE: "$CI_REGISTRY_IMAGE/ubuntu/$UBUNTU_VERSION:$UBUNTU_TAG" + +include: + - project: 'wayland/ci-templates' + ref: master + file: '/templates/ubuntu.yml' + +build-container: + extends: .ubuntu@container-ifnot-exists + stage: container + variables: + GIT_STRATEGY: none # no need to pull the whole tree for rebuilding the image + UBUNTU_DEBS: >- + 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 @@ -19,7 +99,15 @@ build-autotools: 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 diff --git a/Makefile.am b/Makefile.am index 47d8c3fbc..1cca14037 100644 --- a/Makefile.am +++ b/Makefile.am @@ -32,7 +32,6 @@ EXTRA_DIST = \ README \ CODE_OF_CONDUCT.md \ scripts/benchmark_memory_usage.sh \ - scripts/Dockerfile \ scripts/plot_memory_usage.gp \ scripts/benchmarks/README \ todo \ diff --git a/scripts/Dockerfile b/scripts/Dockerfile deleted file mode 100644 index e75dbbdcb..000000000 --- a/scripts/Dockerfile +++ /dev/null @@ -1,65 +0,0 @@ -# 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 \ - libxml2-utils \ - libxtst-dev \ - make \ - ninja-build \ - python3-setuptools \ - systemd - -# Install meson from upstream tarball -ARG MESON_VERSION=0.50.0 -RUN apt-get install -y wget && \ - wget -q https://github.com/mesonbuild/meson/releases/download/${MESON_VERSION}/meson-${MESON_VERSION}.tar.gz && \ - tar -xf meson-${MESON_VERSION}.tar.gz && \ - cd meson-${MESON_VERSION} && \ - python3 setup.py install - -# 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