build everithing in docker now

This commit is contained in:
Marc Wäckerlin
2015-12-01 12:17:01 +00:00
parent c5bb64338a
commit 7d32068bdd
5 changed files with 100 additions and 13 deletions

View File

@@ -1,20 +1,90 @@
#! /bin/bash -ex
#! /bin/bash -e
# build and test everything in a fresh docker installation
img="ubuntu:latest"
repos=""
keys=""
envs=""
dirs="-v $(pwd):/workdir"
targets="all check distcheck"
if test -e ./build-in-docker.conf; then
# you can preconfigure the variables in file build-in-docker.conf
# if you do so, add the file to EXTRA_DIST in makefile.am
source ./build-in-docker.conf
fi
while test $# -gt 0; do
case "$1" in
(-h|--help)
echo "$0 [OPTIONS]"
echo
echo "OPTIONS:"
echo " -h, --help show this help"
echo " -i --image <image> use given docker image instead of ${img}"
echo " -t --targets targets specify build targets, default: ${targets}"
echo " -r --repo <url> add given apt repository"
echo " -k --key <url> add public key from url"
echo " -e --env <var>=<val> set environment variable in docker"
echo " -d --dir <dir> access given directory read only"
echo
echo "EXAMPLE:"
echo
echo "$0 -i mwaeckerlin/ubuntu:trusty-i386 \\"
echo " -t deb \\"
echo " -e ANDROID_HOME=/opt/local/android \\"
echo " -d /opt/local/android \\"
echo " -r universe \\"
echo " -r https://dev.marc.waeckerlin.org/repository \\"
echo " -k https://dev.marc.waeckerlin.org/repository/PublicKey"
echo
exit 0
;;
(-i|--image) shift;
img="$1"
;;
(-t|--targets) shift;
targets="$1"
;;
(-r|--repo) shift;
repos+=" $1"
;;
(-k|--key) shift;
keys+=" $1"
;;
(-e|--env) shift;
envs+=" -e $1"
;;
(-d|--dirs) shift;
dirs+=" -v $1:$1:ro"
;;
(*)
echo "**** ERROR: unknown option '$1', try --help" 1>&2
exit 1
;;
esac
if test $# -eq 0; then
echo "**** ERROR: missing value, try --help" 2>61
exit 1
fi
shift
done
DOCKER_ID=$(docker run -d -v $(pwd):/workdir -w /workdir ubuntu sleep infinity)
set -x
DOCKER_ID=$(docker run -d ${dirs} ${envs} -w /workdir $img sleep infinity)
trap "docker rm -f ${DOCKER_ID}" INT TERM EXIT
docker exec ${DOCKER_ID} apt-get install -y software-properties-common apt-transport-https dpkg-dev
docker exec ${DOCKER_ID} apt-add-repository universe
docker exec ${DOCKER_ID} apt-add-repository https://dev.marc.waeckerlin.org/repository
wget -O- https://dev.marc.waeckerlin.org/repository/PublicKey \
| docker exec -i ${DOCKER_ID} apt-key add -
if test -n "$*"; then
for p in $*; do
docker exec ${DOCKER_ID} apt-add-repository $p
if test -n "${repos}"; then
for repo in ${repos}; do
docker exec ${DOCKER_ID} apt-add-repository ${repo}
done
fi
if test -n "${keys}"; then
for key in ${keys}; do
wget -O- ${key} \
| docker exec -i ${DOCKER_ID} apt-key add -
done
fi
docker exec ${DOCKER_ID} apt-get update
docker exec ${DOCKER_ID} ./resolve-debbuilddeps.sh
docker exec -u $(id -u) ${DOCKER_ID} svn upgrade || true
docker exec -u $(id -u) ${DOCKER_ID} ./bootstrap.sh -t "all check distcheck"
docker exec -u $(id -u) ${DOCKER_ID} ./bootstrap.sh -t "${targets}"