[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