Commit 2e0ef434 authored by Andres Gomez's avatar Andres Gomez

travis: add docker based cmake build job

Until now we were only running the python unit tests.

It seems desirable to also check that the CMake based build compiles
successfully. We do that now using docker.

The docker build can be tweaked with some environment variables and,
also, be stored in the docker hub if desired. Check the changes for
extra details regarding these variables.

v2: Removed other build possibilities other than just from inside
    Travis-CI, as suggested by Juan.
v3: Replaced the "RELEASE" parameter to create the docker image with
    "PARENT" and removed some unneeded documentation after v2, as
    suggested by Juan.
v4:
  - Use DOCKER_PARENT, DOCKER_IMAGE and DOCKER_TAG variables from the
    custom Travis-CI setup to define the PARENT, IMAGE and TAG
    parameters during the docker image creation.
  - Upload the image only if DOCKER_IMAGE and DOCKER_TAG are set.

Cc: Dylan Baker <dylan@pnwbakers.com>
Cc: Juan A. Suarez <jasuarez@igalia.com>
Signed-off-by: Andres Gomez's avatarAndres Gomez <agomez@igalia.com>
Reviewed-by: Juan Suárez Romero's avatarJuan A. Suarez <jasuarez@igalia.com>
Acked-by: Eric Anholt's avatarEric Anholt <eric@anholt.net>
Acked-by: Dylan Baker's avatarDylan Baker <dylan@pnwbakers.com>
parent 6fefc0b5
sudo: false
os: linux
language: python
cache: pip
cache:
- ccache
- pip
services:
- docker
env:
global:
- BUILD=pytest
matrix:
include:
- python: 2.7
......@@ -12,7 +23,37 @@ matrix:
env: TOX_ENV="py35-{generator,noaccel,accel-nix,streams}"
- python: 3.6
env: TOX_ENV="py36-{generator,noaccel,accel-nix,streams}"
- env: BUILD=cmake
install:
- |
if [[ $BUILD == pytest ]]; then
pip install tox
else
wget https://github.com/grammarly/rocker/releases/download/1.3.1/rocker-1.3.1-linux_amd64.tar.gz
tar xvf rocker-1.3.1-linux_amd64.tar.gz
rm rocker-1.3.1-linux_amd64.tar.gz
fi
before_script:
- |
if [[ $BUILD != pytest ]]; then
mkdir -p -m777 ~/.ccache
fi
script:
- tox -e $TOX_ENV
- |
if [[ $BUILD == pytest ]]; then
tox -e $TOX_ENV
else
./rocker build -f docker/Rockerfile.piglit ${DOCKER_TAG:+--var TAG=}${DOCKER_TAG} ${DOCKER_IMAGE:+--var IMAGE=}${DOCKER_IMAGE} ${DOCKER_PARENT:+--var PARENT=}${DOCKER_PARENT} .
fi
after_success:
- |
if [[ $BUILD != pytest ]]; then
if [[ -n $DOCKER_IMAGE && -n $DOCKER_TAG && -n $DOCKER_USERNAME && $TRAVIS_BRANCH == master ]]; then
docker login -u "${DOCKER_USERNAME}" -p "${DOCKER_PASSWORD}"
docker push "${DOCKER_IMAGE}":"${DOCKER_TAG}"
fi
fi
#
# This builds Piglit.
#
# ~~~
# rocker build -f Rockerfile.piglit [--attach] \
# [--var IMAGE=freedesktop/mesa] # freedesktop/mesa, myrepo/myproyect, ... \
# [--var TAG=piglit] # piglit-17.0, piglit-13.0, ... \
# [--var PARENT=ubuntu:xenial] # ubuntu:xenial, freedesktop/mesa:17.3, ...
# ~~~
#
# Environment variables that are used in the build:
# - MAKEFLAGS: flags to pass to make (e.g., "-j8")
# - CCACHE_DIR: ccache directory (default: ~/.ccache)
#
# To run
#
# ~~~
# mkdir -p -m777 ~/my_results_dir
# docker run --privileged --rm -t -v ~/my_results_dir:/results:Z \
# -v /tmp/.X11-unix:/tmp/.X11-unix freedesktop/mesa:piglit
# ~~~
#
{{ $image := (or .IMAGE "freedesktop/mesa") }}
{{ $parent_image := (or .PARENT "ubuntu:xenial") }}
{{ $ccachedir := (or .Env.CCACHE_DIR "~/.ccache") }}
FROM {{ $parent_image }}
LABEL maintainer "Andres Gomez <agomez@igalia.com>"
USER root
ENV LC_ALL=C.UTF-8
RUN apt-get update \
&& apt-get -y --no-install-recommends install sudo gcc g++ ccache \
git pkg-config bash-completion cmake \
libz-dev libpng-dev libgl-dev libegl1-mesa-dev libwaffle-dev \
python3-setuptools python3-pip \
&& rm -fr /var/lib/apt/lists/*
RUN pip3 install numpy six mako
RUN getent passwd local > /dev/null || adduser --gecos "" local && passwd -d local && adduser local sudo
USER local
{{ if .Env.MAKEFLAGS }}
ENV MAKEFLAGS={{ .Env.MAKEFLAGS }}
{{ end }}
WORKDIR /home/local
MOUNT {{ $ccachedir }}:/home/local/.ccache:Z
RUN sudo chown -R local:local /home/local/.ccache
ENV PATH=/usr/lib/ccache:$PATH
ADD . /home/local/piglit
RUN sudo chown -R local:local /home/local/piglit
WORKDIR /home/local/piglit
ATTACH [ "/bin/bash" ]
RUN cmake . && cmake --build .
VOLUME /results
{{ if .TAG }}
TAG {{ $image }}:{{ .TAG }}
{{ end }}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment