From f6d276062765d19807b057519e5055f905d3b748 Mon Sep 17 00:00:00 2001 From: Benjamin Tissoires Date: Mon, 18 Mar 2019 15:51:07 +0100 Subject: [PATCH] CI: containerize the CI Reuse the templates from wayland/ci-templates: whenever DEBIAN_TAG is changed, this will rebuild a new container. This adds two things: - better reliability (we do not randomly pull packages whenever the CI runs and we can reproduce with this particular environment) - faster builds, as we do not need to pull the universe at each run Signed-off-by: Benjamin Tissoires [Pekka: bump DEBIAN_TAG] Signed-off-by: Pekka Paalanen --- .gitlab-ci.yml | 64 ++++++++++++++++++------------------ .gitlab-ci/debian-install.sh | 12 +++++++ 2 files changed, 44 insertions(+), 32 deletions(-) create mode 100644 .gitlab-ci/debian-install.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index cf882797..129e9906 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,24 +1,34 @@ -image: debian:stretch +# vim: set expandtab shiftwidth=2 tabstop=8 textwidth=0: + +variables: + UPSTREAM_REPO: wayland/weston + DEBIAN_VERSION: stretch + DEBIAN_EXEC: 'bash .gitlab-ci/debian-install.sh' + + DEBIAN_TAG: '2019-03-28.0' + DEBIAN_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/debian/$DEBIAN_VERSION:$DEBIAN_TAG + + +include: + - project: 'wayland/ci-templates' + ref: c73dae8b84697ef18e2dbbf4fed7386d9652b0cd + file: '/templates/debian.yml' + stages: + - container_prep - build -before_script: - - echo 'path-exclude=/usr/share/doc/*' > /etc/dpkg/dpkg.cfg.d/99-exclude-cruft - - echo 'path-exclude=/usr/share/man/*' >> /etc/dpkg/dpkg.cfg.d/99-exclude-cruft - - echo '#!/bin/sh' > /usr/sbin/policy-rc.d - - echo 'exit 101' >> /usr/sbin/policy-rc.d - - chmod +x /usr/sbin/policy-rc.d - - echo 'deb http://deb.debian.org/debian stretch-backports main' >> /etc/apt/sources.list - - apt-get update - - apt-get -y --no-install-recommends install build-essential automake autoconf libtool pkg-config libexpat1-dev libffi-dev libxml2-dev libpixman-1-dev libpng-dev libjpeg-dev libcolord-dev mesa-common-dev libglu1-mesa-dev libegl1-mesa-dev libgles2-mesa-dev libwayland-dev libxcb1-dev libxcb-composite0-dev libxcb-xfixes0-dev libxcb-xkb-dev libx11-xcb-dev libx11-dev libudev-dev libgbm-dev libxkbcommon-dev libcairo2-dev libpango1.0-dev libgdk-pixbuf2.0-dev libxcursor-dev libmtdev-dev libpam0g-dev libvpx-dev libsystemd-dev libevdev-dev libinput-dev libwebp-dev libjpeg-dev libva-dev liblcms2-dev git libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev freerdp2-dev curl python3-pip python3-setuptools ninja-build - - pip3 install --user git+https://github.com/mesonbuild/meson.git@0.49 - - mkdir -p /tmp/.X11-unix - - chmod 777 /tmp/.X11-unix -build-native-autotools: +container_prep: + extends: .debian@container-ifnot-exists + stage: container_prep + + +.build-native: stage: build - script: + image: $DEBIAN_CONTAINER_IMAGE + before_script: - git clone --depth=1 git://anongit.freedesktop.org/git/wayland/wayland-protocols - export WAYLAND_PROTOCOLS_DIR="$(pwd)/prefix-wayland-protocols" - export PKG_CONFIG_PATH="$WAYLAND_PROTOCOLS_DIR/share/pkgconfig:$PKG_CONFIG_PATH" @@ -35,6 +45,11 @@ build-native-autotools: - export PREFIX="$(pwd)/prefix-$BUILD_ID" - export BUILDDIR="$(pwd)/build-$BUILD_ID" - mkdir "$BUILDDIR" "$PREFIX" + + +build-native-autotools: + extends: .build-native + script: - cd "$BUILDDIR" - ../autogen.sh --prefix="$PREFIX" --disable-setuid-install --enable-xwayland --enable-x11-compositor --enable-drm-compositor --enable-wayland-compositor --enable-headless-compositor --enable-fbdev-compositor --enable-rdp-compositor --enable-screen-sharing --enable-vaapi-recorder --enable-simple-clients --enable-simple-egl-clients --enable-simple-dmabuf-drm-client --enable-simple-dmabuf-v4l-client --enable-clients --enable-resize-optimization --enable-weston-launch --enable-fullscreen-shell --enable-colord --enable-dbus --enable-systemd-login --enable-junit-xml --enable-ivi-shell --enable-wcap-tools --disable-libunwind --enable-demo-clients-install --enable-lcms --with-cairo=image --enable-remoting --enable-autotools - make all @@ -50,26 +65,11 @@ build-native-autotools: - build-*/logs - prefix-* + build-native-meson: - stage: build + extends: .build-native script: - - git clone --depth=1 git://anongit.freedesktop.org/git/wayland/wayland-protocols - - export WAYLAND_PROTOCOLS_DIR="$(pwd)/prefix-wayland-protocols" - - export PKG_CONFIG_PATH="$WAYLAND_PROTOCOLS_DIR/share/pkgconfig:$PKG_CONFIG_PATH" - - export MAKEFLAGS="-j4" - - cd wayland-protocols - - git show -s HEAD - - mkdir build - - cd build - - ../autogen.sh --prefix="$WAYLAND_PROTOCOLS_DIR" - - make install - - cd ../../ - - export XDG_RUNTIME_DIR="$(mktemp -p $(pwd) -d xdg-runtime-XXXXXX)" - - export BUILD_ID="weston-$CI_JOB_NAME_$CI_COMMIT_SHA-$CI_JOB_ID" - - export PREFIX="$(pwd)/prefix-$BUILD_ID" - - export BUILDDIR="$(pwd)/build-$BUILD_ID" - export PATH=~/.local/bin:$PATH - - mkdir "$BUILDDIR" "$PREFIX" - cd "$BUILDDIR" - meson --prefix="$PREFIX" -Dsimple-dmabuf-drm=intel .. - ninja -k0 diff --git a/.gitlab-ci/debian-install.sh b/.gitlab-ci/debian-install.sh new file mode 100644 index 00000000..758c15dd --- /dev/null +++ b/.gitlab-ci/debian-install.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +set -o xtrace + +echo 'deb http://deb.debian.org/debian stretch-backports main' >> /etc/apt/sources.list +apt-get update +apt-get -y --no-install-recommends install build-essential automake autoconf libtool pkg-config libexpat1-dev libffi-dev libxml2-dev libpixman-1-dev libpng-dev libjpeg-dev libcolord-dev mesa-common-dev libglu1-mesa-dev libegl1-mesa-dev libgles2-mesa-dev libwayland-dev libxcb1-dev libxcb-composite0-dev libxcb-xfixes0-dev libxcb-xkb-dev libx11-xcb-dev libx11-dev libudev-dev libgbm-dev libxkbcommon-dev libcairo2-dev libpango1.0-dev libgdk-pixbuf2.0-dev libxcursor-dev libmtdev-dev libpam0g-dev libvpx-dev libsystemd-dev libevdev-dev libinput-dev libwebp-dev libjpeg-dev libva-dev liblcms2-dev git libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev freerdp2-dev curl python3-pip python3-setuptools ninja-build + +pip3 install --user git+https://github.com/mesonbuild/meson.git@0.49 + +mkdir -p /tmp/.X11-unix +chmod 777 /tmp/.X11-unix