• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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