gitlab: Make container updates automatic

This commit is contained in:
Arun Raghavan 2019-11-21 16:04:18 +05:30
parent 6f48bc9508
commit c48f36fcb3
3 changed files with 89 additions and 67 deletions

View File

@ -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

View File

@ -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 \

View File

@ -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