1# The build has two stages. The 'container' stage is used to build a Docker 2# container and push it to the project's container registry on fd.o GitLab. 3# This step is only run when the tag for the container changes, else it is 4# effectively a no-op. All of this infrastructure is inherited from the 5# wayland/ci-templates repository which is the recommended way to set up CI 6# infrastructure on fd.o GitLab. 7# 8# Once the container stage is done, we move on to the 'build' stage where we 9# run an autotools and meson build in parallel. Currently, tests are also run 10# as part of the build stage as there doesn't seem to be significant value to 11# splitting the stages at the moment. 12 13stages: 14 - container 15 - build 16 17variables: 18 # Update this tag when you want to trigger a rebuild the container in which 19 # CI runs, for example when adding new packages to FDO_DISTRIBUTION_PACKAGES. 20 # The tag is an arbitrary string that identifies the exact container 21 # contents. 22 FDO_DISTRIBUTION_TAG: '2020-03-07-01' 23 FDO_DISTRIBUTION_VERSION: '18.04' 24 FDO_UPSTREAM_REPO: 'pulseaudio/pulseaudio' 25 UBUNTU_IMAGE: "$CI_REGISTRY_IMAGE/ubuntu/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG" 26 27include: 28 # We pull templates from master to avoid the overhead of periodically 29 # scanning for changes upstream. This does means builds might occasionally 30 # break due to upstream changing things, so if you see unexpected build 31 # failures, this might be one cause. 32 - project: 'wayland/ci-templates' 33 ref: 'master' 34 file: '/templates/ubuntu.yml' 35 36build-container: 37 extends: .fdo.container-ifnot-exists@ubuntu 38 stage: container 39 variables: 40 GIT_STRATEGY: none # no need to pull the whole tree for rebuilding the image 41 42 # Remember to update FDO_DISTRIBUTION_TAG when modifying this package list! 43 # Otherwise the changes won't have effect since an old container image will 44 # be used. 45 FDO_DISTRIBUTION_PACKAGES: >- 46 autoconf 47 automake 48 autopoint 49 bash-completion 50 check 51 curl 52 dbus-x11 53 g++ 54 gcc 55 gettext 56 git-core 57 libasound2-dev 58 libasyncns-dev 59 libavahi-client-dev 60 libbluetooth-dev 61 libcap-dev 62 libfftw3-dev 63 libglib2.0-dev 64 libgtk-3-dev 65 libice-dev 66 libjack-dev 67 liblircclient-dev 68 libltdl-dev 69 liborc-0.4-dev 70 libsbc-dev 71 libsndfile1-dev 72 libsoxr-dev 73 libspeexdsp-dev 74 libssl-dev 75 libsystemd-dev 76 libtdb-dev 77 libtool 78 libudev-dev 79 libwebrtc-audio-processing-dev 80 libwrap0-dev 81 libx11-xcb-dev 82 libxcb1-dev 83 libxml-parser-perl 84 libxml2-utils 85 libxtst-dev 86 make 87 ninja-build 88 pkg-config 89 python3-setuptools 90 systemd 91 wget 92 93build-autotools: 94 stage: build 95 image: $UBUNTU_IMAGE 96 script: 97 - export MAKEFLAGS="-j$(nproc)" 98 - NOCONFIGURE=1 ./bootstrap.sh 99 - mkdir build 100 - cd build 101 - ../configure --localstatedir=/var 102 - make 103 - make check 104 - make check-daemon 105 - ulimit -c 0 # don't dump core files on tests that are supposed to assert 106 - make distcheck 107 artifacts: 108 paths: 109 - build/ 110 111build-meson: 112 stage: build 113 image: $UBUNTU_IMAGE 114 script: 115 # Install meson 116 - wget -q https://github.com/mesonbuild/meson/releases/download/0.50.0/meson-0.50.0.tar.gz 117 - tar -xf meson-0.50.0.tar.gz 118 - cd meson-0.50.0 119 - python3 setup.py install 120 - cd .. 121 # Do the actual build 122 - meson build 123 - cd build 124 - ninja 125 - ninja test 126 - ninja test-daemon 127 artifacts: 128 paths: 129 - build/ 130