11a163c39SJeremy Kerr#!/bin/bash
21a163c39SJeremy Kerr
31a163c39SJeremy Kerr# This build script is for running the Jenkins builds using docker.
41a163c39SJeremy Kerr#
51a163c39SJeremy Kerr
61a163c39SJeremy Kerr# Trace bash processing
71a163c39SJeremy Kerrset -x
81a163c39SJeremy Kerr
91a163c39SJeremy Kerr# Default variables
101a163c39SJeremy KerrWORKSPACE=${WORKSPACE:-${HOME}/${RANDOM}${RANDOM}}
111a163c39SJeremy Kerrhttp_proxy=${http_proxy:-}
121a163c39SJeremy Kerr
131a163c39SJeremy Kerr# Timestamp for job
141a163c39SJeremy Kerrecho "Build started, $(date)"
151a163c39SJeremy Kerr
161a163c39SJeremy Kerr# Configure docker build
171a163c39SJeremy Kerrif [[ -n "${http_proxy}" ]]; then
181a163c39SJeremy Kerr    PROXY="RUN echo \"Acquire::http::Proxy \\"\"${http_proxy}/\\"\";\" > /etc/apt/apt.conf.d/000apt-cacher-ng-proxy"
191a163c39SJeremy Kerrfi
201a163c39SJeremy Kerr
211a163c39SJeremy KerrDockerfile=$(cat << EOF
221a163c39SJeremy KerrFROM ubuntu:16.04
231a163c39SJeremy Kerr
241a163c39SJeremy Kerr${PROXY}
251a163c39SJeremy Kerr
261a163c39SJeremy KerrENV DEBIAN_FRONTEND noninteractive
271a163c39SJeremy KerrRUN apt-get update && apt-get install -yy \
281a163c39SJeremy Kerr	make \
291a163c39SJeremy Kerr	texlive-xetex \
301a163c39SJeremy Kerr	pandoc \
311a163c39SJeremy Kerr	fonts-inconsolata \
321a163c39SJeremy Kerr	fonts-linuxlibertine
331a163c39SJeremy Kerr
34*384d741bSPatrick WilliamsRUN grep -q ${GROUPS[0]} /etc/group || groupadd -g ${GROUPS[0]} ${USER}
35*384d741bSPatrick WilliamsRUN grep -q ${UID} /etc/passwd || useradd -d ${HOME} -m -u ${UID} -g ${GROUPS[0]} ${USER}
361a163c39SJeremy Kerr
371a163c39SJeremy KerrUSER ${USER}
381a163c39SJeremy KerrENV HOME ${HOME}
391a163c39SJeremy KerrRUN /bin/bash
401a163c39SJeremy KerrEOF
411a163c39SJeremy Kerr)
421a163c39SJeremy Kerr
431a163c39SJeremy Kerr# Build the docker container
44*384d741bSPatrick Williamsif ! docker build -t linux-build/ubuntu - <<< "${Dockerfile}" ; then
451a163c39SJeremy Kerr    echo "Failed to build docker container."
461a163c39SJeremy Kerr    exit 1
471a163c39SJeremy Kerrfi
481a163c39SJeremy Kerr
491a163c39SJeremy Kerr# Create the docker run script
501a163c39SJeremy Kerrexport PROXY_HOST=${http_proxy/#http*:\/\/}
511a163c39SJeremy Kerrexport PROXY_HOST=${PROXY_HOST/%:[0-9]*}
521a163c39SJeremy Kerrexport PROXY_PORT=${http_proxy/#http*:\/\/*:}
531a163c39SJeremy Kerr
54*384d741bSPatrick Williamsmkdir -p "${WORKSPACE}"
551a163c39SJeremy Kerr
561a163c39SJeremy Kerrcat > "${WORKSPACE}"/build.sh << EOF_SCRIPT
571a163c39SJeremy Kerr#!/bin/bash
581a163c39SJeremy Kerr
591a163c39SJeremy Kerrset -x
601a163c39SJeremy Kerr
611a163c39SJeremy Kerrcd ${WORKSPACE}
621a163c39SJeremy Kerr
631a163c39SJeremy Kerr# Go into the linux directory (the script will put us in a build subdir)
641a163c39SJeremy Kerrcd docs
651a163c39SJeremy Kerr
661a163c39SJeremy Kerrmake
671a163c39SJeremy Kerr
681a163c39SJeremy KerrEOF_SCRIPT
691a163c39SJeremy Kerr
70*384d741bSPatrick Williamschmod a+x "${WORKSPACE}/build.sh"
711a163c39SJeremy Kerr
721a163c39SJeremy Kerr# Run the docker container, execute the build script we just built
73*384d741bSPatrick Williamsdocker run --cap-add=sys_admin --net=host --rm=true -e WORKSPACE="${WORKSPACE}" --user="${USER}" \
74*384d741bSPatrick Williams    -w "${HOME}" -v "${HOME}":"${HOME}" -t linux-build/ubuntu "${WORKSPACE}/build.sh"
75