summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.travis.yml47
-rw-r--r--docker/Rockerfile.piglit74
2 files changed, 118 insertions, 3 deletions
diff --git a/.travis.yml b/.travis.yml
index b47829ff9..b4cbcca49 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,5 +1,16 @@
+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:
- pip install tox
+ - |
+ 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
diff --git a/docker/Rockerfile.piglit b/docker/Rockerfile.piglit
new file mode 100644
index 000000000..0d8f8bb45
--- /dev/null
+++ b/docker/Rockerfile.piglit
@@ -0,0 +1,74 @@
+#
+# 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 }}