[pulseaudio-discuss] [PATCH] gitlab: Add support for GitLab CI
Felipe Sateler
fsateler at debian.org
Thu Aug 23 12:59:11 UTC 2018
On Wed, Aug 22, 2018 at 11:36 PM Arun Raghavan <arun at arunraghavan.net>
wrote:
> This adds a Dockerfile to generate a Docker image with the required
> dependencies on top of the standard Ubuntu 18.04 image. The Gitlab CI
> then runs the PulseAudio build within this image.
> ---
> .gitlab-ci.yml | 19 +++++++++++++++++
> scripts/Dockerfile | 53 ++++++++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 72 insertions(+)
> create mode 100644 .gitlab-ci.yml
> create mode 100644 scripts/Dockerfile
>
> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
> new file mode 100644
> index 000000000..e9c983075
> --- /dev/null
> +++ b/.gitlab-ci.yml
> @@ -0,0 +1,19 @@
> +image: registry.freedesktop.org/pulseaudio/pulseaudio/ubuntu:18.04
> +
> +build:
> + stage: build
> + script:
> + - export MAKEFLAGS="-j4"
>
This seems to be inappropriate for a CI build. How do you know the
available cores in the runner? I would expect to have at most
MAKEFLAGS=$(nproc)
> + - NOCONFIGURE=1 ./bootstrap.sh
> + - mkdir build
> + - cd build
> + - ../configure --localstatedir=/var
>
I think for CI builds options should be explicitly selected, and have the
build fail if any of the expected options cannot be enabled. This may help
catch some configure.ac/Makefile.am bugs.
> + - make
> + - make check
> + - make check-daemon
> + - make distcheck
>
This effectively runs make and make check again. I think it would be better
to split this to a separate job so it can run in parallel.
> + - make install DESTDIR=`mktemp -d`
> + - make dist
> + artifacts:
> + paths:
> + - build/
> diff --git a/scripts/Dockerfile b/scripts/Dockerfile
> new file mode 100644
> index 000000000..ed7063212
> --- /dev/null
> +++ b/scripts/Dockerfile
> @@ -0,0 +1,53 @@
> +# 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 \
>
build-essential should get you a basic build system in place. Otherwise,
you need to add make to the list (make might stop being a transitive
dependency in the future).
> + gettext \
>
Isn't intltool necessary too?(If not I could drop that from the debian
package)
> + git-core \
> + libasound2-dev \
> + libasyncns-dev \
> + libatomic-ops-dev \
>
This is not necessary because gcc has atomic builtins.
> + 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 \
> + libtdb-dev \
> + libudev-dev \
> + libwebrtc-audio-processing-dev \
> + libwrap0-dev \
> + libx11-xcb-dev \
> + libxcb1-dev \
> + libxml-parser-perl \
> + libxtst-dev \
> + systemd
>
libsystemd-dev is missing.
> +
> +# 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
>
Ubuntu has adduser that creates both user and group at the same time.
> +USER a_user:a_group
> +
> +# And make sure subsequent commands are run in the user's home directory
> +WORKDIR /home/a_user
> --
> 2.17.1
>
Saludos
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/pulseaudio-discuss/attachments/20180823/4e3718bb/attachment.html>
More information about the pulseaudio-discuss
mailing list