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