I haven't looked too closely at this, but I like the idea of using docker to allow running the cmake based job.
Acked-by: Dylan Baker <dy...@pnwbakers.com> Quoting Andres Gomez (2018-01-31 13:11:52) > 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 <dy...@pnwbakers.com> > Cc: Juan A. Suarez <jasua...@igalia.com> > Signed-off-by: Andres Gomez <ago...@igalia.com> > Reviewed-by: Juan A. Suarez <jasua...@igalia.com> > --- > .travis.yml | 47 ++++++++++++++++++++++++++++-- > docker/Rockerfile.piglit | 74 > ++++++++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 118 insertions(+), 3 deletions(-) > create mode 100644 docker/Rockerfile.piglit > > 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 <ago...@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 }} > -- > 2.15.1 >
signature.asc
Description: signature
_______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/piglit