2015-02-09 04:38:37 +00:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
: ${ARTIFACTS:=$(pwd)/assets}
|
|
|
|
: ${BUILD:=$(pwd)/build}
|
|
|
|
: ${DIST:=$(pwd)/dist}
|
|
|
|
|
|
|
|
write_base()
|
|
|
|
{
|
2015-07-08 19:20:16 +00:00
|
|
|
DOCKER_BASE=${DOCKER_BASE:?"DOCKER_BASE not defined"}
|
|
|
|
|
2015-02-09 04:38:37 +00:00
|
|
|
if [ "${BASE_WRITTEN}" = "true" ]; then
|
|
|
|
return
|
|
|
|
fi
|
|
|
|
|
|
|
|
mkdir -p $(dirname ${DOCKER_FILE})
|
|
|
|
|
|
|
|
cat > ${DOCKER_FILE} << EOF
|
2015-07-08 19:20:16 +00:00
|
|
|
FROM ${DOCKER_BASE}
|
2015-02-09 04:38:37 +00:00
|
|
|
ENV TERM xterm
|
2015-03-18 13:28:05 +00:00
|
|
|
ENV IN_DOCKER true
|
2015-02-09 04:38:37 +00:00
|
|
|
WORKDIR /source
|
|
|
|
EOF
|
|
|
|
|
|
|
|
BASE_WRITTEN=true
|
|
|
|
}
|
|
|
|
|
|
|
|
run()
|
|
|
|
{
|
|
|
|
local content
|
|
|
|
|
|
|
|
while [ $# -gt 1 ]; do
|
|
|
|
case $1 in
|
|
|
|
--assets)
|
|
|
|
shift 1
|
|
|
|
if [ -e "$1" ]; then
|
|
|
|
content="$content\nCOPY $1 /source/$1"
|
|
|
|
else
|
|
|
|
content="$content\nCOPY $1 /source/"
|
|
|
|
fi
|
|
|
|
;;
|
2015-02-19 18:26:59 +00:00
|
|
|
*)
|
|
|
|
break
|
|
|
|
;;
|
2015-02-09 04:38:37 +00:00
|
|
|
esac
|
|
|
|
|
|
|
|
shift 1
|
|
|
|
done
|
|
|
|
|
|
|
|
write_base
|
|
|
|
if [ -n "$content" ]; then
|
|
|
|
echo -e "$content" >> ${DOCKER_FILE}
|
|
|
|
fi
|
|
|
|
if [ -n "$1" ]; then
|
|
|
|
echo -e "\nCOPY $1 /source/$1" >> ${DOCKER_FILE}
|
2015-02-19 18:26:59 +00:00
|
|
|
echo -e "RUN /source/"$@"" >> ${DOCKER_FILE}
|
2015-02-09 04:38:37 +00:00
|
|
|
fi
|
2015-02-16 23:38:49 +00:00
|
|
|
|
|
|
|
if [ "$RUN_EXEC" = "true" ]; then
|
2015-02-19 18:26:59 +00:00
|
|
|
"$@"
|
2015-02-16 23:38:49 +00:00
|
|
|
fi
|
2015-02-09 04:38:37 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
finish()
|
|
|
|
{
|
2015-02-19 18:26:59 +00:00
|
|
|
if [ "$RUN_EXEC" = "true" ]; then
|
|
|
|
return
|
|
|
|
fi
|
|
|
|
|
2015-02-09 04:38:37 +00:00
|
|
|
local cmd="docker build -t ${DOCKER_IMAGE} -f ${DOCKER_FILE} ."
|
|
|
|
echo Running $cmd
|
|
|
|
echo Pwd $(pwd)
|
|
|
|
|
|
|
|
cat ${DOCKER_FILE}
|
|
|
|
|
|
|
|
$cmd
|
|
|
|
}
|
|
|
|
|
|
|
|
reset_docker_build()
|
|
|
|
{
|
|
|
|
BASE_WRITTEN=false
|
|
|
|
}
|
|
|
|
|
|
|
|
check()
|
|
|
|
{
|
|
|
|
local hash=$1
|
|
|
|
local file=$2
|
|
|
|
|
|
|
|
if [ ! -e "$file" ]; then
|
|
|
|
return 1
|
|
|
|
fi
|
|
|
|
|
2015-03-07 04:25:25 +00:00
|
|
|
if [ "$hash" = dev ]; then
|
|
|
|
return 0
|
|
|
|
fi
|
|
|
|
|
2015-02-09 04:38:37 +00:00
|
|
|
CURRENT=$(sha1sum $file | awk '{print $1}')
|
|
|
|
|
|
|
|
[ "$hash" = "$CURRENT" ]
|
|
|
|
}
|
|
|
|
|
|
|
|
download()
|
|
|
|
{
|
|
|
|
mkdir -p ${ARTIFACTS}
|
|
|
|
|
|
|
|
local url=$2
|
|
|
|
local file=${ARTIFACTS}/$(basename $2)
|
|
|
|
local hash=$1
|
|
|
|
|
2015-04-10 06:19:13 +00:00
|
|
|
if [ "$3" != "" ]; then
|
|
|
|
file=${ARTIFACTS}/$3
|
|
|
|
fi
|
|
|
|
|
2015-02-09 04:38:37 +00:00
|
|
|
if ! check $hash $file; then
|
2015-02-17 08:18:48 +00:00
|
|
|
echo Downloading $url to $file
|
2015-02-09 04:38:37 +00:00
|
|
|
curl -sL $url > $file
|
|
|
|
fi
|
|
|
|
|
|
|
|
if ! check $hash $file; then
|
|
|
|
echo "ERROR: $file does not match checksum $hash, got $CURRENT" 1>&2
|
|
|
|
return 1
|
|
|
|
fi
|
|
|
|
}
|