diff --git a/build-scripts/addons/create_addon_all.sh b/build-scripts/addons/create_addon_all.sh index 9178780..c38131e 100755 --- a/build-scripts/addons/create_addon_all.sh +++ b/build-scripts/addons/create_addon_all.sh @@ -1,15 +1,7 @@ #!/bin/bash - set -e -# Sanity checks -if [ "$#" -ne 1 ]; then - echo "Usage: create_addon_all.sh " - echo "Optional environment: BUILD_DIR BRANCH" - exit 1 -fi - for arch in "armhf" "aarch64" "i386" "amd64" do - ./create_hassio_addon.sh $arch $1 + ./create_hassio_addon.sh -a $arch "@$" done diff --git a/build-scripts/addons/create_hassio_addon.sh b/build-scripts/addons/create_hassio_addon.sh index 11ca23f..0238b9d 100755 --- a/build-scripts/addons/create_hassio_addon.sh +++ b/build-scripts/addons/create_hassio_addon.sh @@ -1,9 +1,11 @@ #!/bin/bash - set -e BUILD_CONTAINER_NAME=hassio-addons-$$ -DOCKER_REPO=homeassistant +DOCKER_PUSH="false" +DOCKER_HUB=homeassistant +BRANCH=build +REPOSITORY=https://github.com/home-assistant/hassio-addons cleanup() { echo "[INFO] Cleanup." @@ -19,66 +21,149 @@ cleanup() { } trap 'cleanup fail' SIGINT SIGTERM +help () { + cat << EOF +Script for hassio addon docker build +create_hassio_addon [options] + +Options: + -h, --help + Display this help and exit. + + -r, --repository https://.../addons + Set git repository to load addon from. + -b, --branch branch_name + Set git branch to load addon from. + -l, --local /path/to/repository + Load addon from a local folder + -s, --slug addon_slug + Name of folder/slug + + -h, --hub hubname + Set user of dockerhub build. + + -a, --arch armhf|aarch64|i386|amd64 + Arch for addon build. + -p, --push + Upload the build to docker hub. +EOF +} + +# Parse arguments +while [[ $# -gt 0 ]]; do + key=$1 + case $key in + -h|--help) + help + exit 0 + ;; + -h|--hub) + DOCKER_HUB=$2 + shift + ;; + -r|--repository) + REPOSITORY=$2 + shift + ;; + -b|--branch) + BRANCH=$2 + shift + ;; + -l|--local) + LOCAL_REPOSITORY=$2 + shift + ;; + -s|--slug) + SLUG=$2 + shift + ;; + -a|--arch) + ARCH=$2 + shift + ;; + -p|--push) + DOCKER_PUSH="true" + ;; + *) + echo "[WARNING] $0 : Argument '$1' unknown. Ignoring." + ;; + esac + shift +done + # Sanity checks -if [ "$#" -ne 2 ]; then - echo "Usage: create_hassio_addon.sh " - echo "Optional environment: BUILD_DIR BRANCH" +if [ "$ARCH" != 'armhf' ] && [ "$ARCH" != 'aarch64' ] && [ "$ARCH" != 'i386' ] && [ "$ARCH" != 'amd64' ]; then + echo "Error: $ARCH is not a supported platform for hassio-supervisor!" + help exit 1 fi -if [ $1 != 'armhf' ] && [ $1 != 'aarch64' ] && [ $1 != 'i386' ] && [ $1 != 'amd64' ]; then - echo "Error: $1 is not a supported platform for hassio addons!" +if [ -z "$SLUG" ]; then + echo "[ERROR] please set a slug!" + help exit 1 fi # Get the absolute script location -pushd `dirname $0` > /dev/null 2>&1 -SCRIPTPATH=`pwd` +pushd "$(dirname "$0")" > /dev/null 2>&1 +SCRIPTPATH=$(pwd) popd > /dev/null 2>&1 -ARCH=$1 -BASE_IMAGE="resin\/${ARCH}-alpine:3.5" -ADDON=$2 -DOCKER_IMAGE=${ARCH}-addon-${ADDON} +BASE_IMAGE="resin\/$ARCH-alpine:3.5" +DOCKER_IMAGE=$DOCKER_HUB/$ARCH-addon-$SLUG BUILD_DIR=${BUILD_DIR:=$SCRIPTPATH} -WORKSPACE=${BUILD_DIR:=$SCRIPTPATH}/hassio-addon -ADDON_WORKSPACE=${WORKSPACE}/${ADDON} -BRANCH=${BRANCH:=build} +WORKSPACE=${BUILD_DIR:=$SCRIPTPATH}/hassio-supervisor-$ARCH +ADDON_WORKSPACE=$WORKSPACE/$SLUG # setup docker echo "[INFO] Setup docker for addon" -mkdir -p $BUILD_DIR +mkdir -p "$BUILD_DIR" +mkdir -p "$WORKSPACE" -git clone https://github.com/home-assistant/hassio-addons $WORKSPACE -cd $WORKSPACE; git checkout $BRANCH +if [ -z "$LOCAL_REPOSITORY" ]; then + git clone "$REPOSITORY" "$WORKSPACE" + cd "$WORKSPACE"; git checkout "$BRANCH" -if [ ! -d $ADDON_WORKSPACE ]; then - echo "Error: $ADDON not found inside Repo!" - exit 1 + if [ ! -d "$ADDON_WORKSPACE" ]; then + echo "Error: $ADDON not found inside Repo!" + exit 1 + fi +else + cp -r "$LOCAL_REPOSITORY/$SLUG" "$ADDON_WORKSPACE" fi -VERSION=$(jq --raw-output ".version" $ADDON_WORKSPACE/config.json) +# Init docker +echo "[INFO] Setup dockerfile" -sed -i "s/%%BASE_IMAGE%%/${BASE_IMAGE}/g" $ADDON_WORKSPACE/Dockerfile -sed -i "s/%%VERSION%%/${VERSION}/g" $ADDON_WORKSPACE/Dockerfile +sed -i "s/{arch}/${ARCH}/g" "$ADDON_WORKSPACE/config.json" +DOCKER_TAG=$(jq --raw-output ".version" "$ADDON_WORKSPACE/config.json") + +# if set custom image in file +CUSTOM_IMAGE=$(jq --raw-output ".image // empty" "$ADDON_WORKSPACE/config.json") +if [ ! -z "$CUSTOM_IMAGE" ]; then + DOCKER_IMAGE=$CUSTOM_IMAGE +fi + +sed -i "s/%%BASE_IMAGE%%/${BASE_IMAGE}/g" "$ADDON_WORKSPACE/Dockerfile" +sed -i "s/%%VERSION%%/${DOCKER_TAG}/g" "$ADDON_WORKSPACE/Dockerfile" # Run build echo "[INFO] start docker build" docker stop $BUILD_CONTAINER_NAME 2> /dev/null || true docker rm --volumes $BUILD_CONTAINER_NAME 2> /dev/null || true docker run --rm \ - -v $ADDON_WORKSPACE:/docker \ + -v "$ADDON_WORKSPACE":/docker \ -v ~/.docker:/root/.docker \ - -e DOCKER_REPO=$DOCKER_REPO \ - -e DOCKER_IMAGE=$DOCKER_IMAGE \ - -e DOCKER_TAG=$VERSION \ + -e DOCKER_PUSH=$DOCKER_PUSH \ + -e DOCKER_IMAGE="$DOCKER_IMAGE" \ + -e DOCKER_TAG="$VERSION" \ --name $BUILD_CONTAINER_NAME \ --privileged \ homeassistant/docker-build-env \ /run-docker.sh echo "[INFO] cleanup WORKSPACE" -cd $BUILD_DIR -rm -rf $WORKSPACE +cd "$BUILD_DIR" +rm -rf "$WORKSPACE" -cleanup +cleanup "okay" exit 0 diff --git a/build-scripts/docker-build-env/Dockerfile b/build-scripts/docker-build-env/Dockerfile index 2a1bad3..b4e3adb 100644 --- a/build-scripts/docker-build-env/Dockerfile +++ b/build-scripts/docker-build-env/Dockerfile @@ -1,5 +1,6 @@ FROM ubuntu:16.04 +# setup locals RUN apt-get update && apt-get install -y \ locales \ && rm -rf /var/lib/apt/lists/* diff --git a/build-scripts/docker-build-env/create_build_env.sh b/build-scripts/docker-build-env/create_build_env.sh index 165de26..0f6f92c 100755 --- a/build-scripts/docker-build-env/create_build_env.sh +++ b/build-scripts/docker-build-env/create_build_env.sh @@ -1,31 +1,65 @@ #!/bin/bash - set -e -DOCKER_REPO=homeassistant -DOCKER_IMAGE=docker-build-env +DOCKER_IMAGE=${DOCKER_IMAGE:="homeassistant/docker-build-env"} +DOCKER_PUSH="false" # Get the absolute script location -pushd `dirname $0` > /dev/null 2>&1 -SCRIPTPATH=`pwd` +pushd "$(dirname "$0")" > /dev/null 2>&1 +SCRIPTPATH=$(pwd) popd > /dev/null 2>&1 -# Sanity checks -if [ "$#" -ne 1 ]; then - echo "Usage: create_build_env.sh [ | NONE]" +help () { + cat << EOF +Script for hassio docker build environment +create_build_env [options] + +Options: + -h, --help + Display this help and exit. + + -t, --tag TAG + Version/Tag of $DOCKER_IMAGE. + -p, --push + Upload the build to docker hub. +EOF +} + +# Parse arguments +while [[ $# -gt 0 ]]; do + key=$1 + case $key in + -h|--help) + help + exit 0 + ;; + -t|--tag) + DOCKER_TAG=$2 + shift + ;; + -p|--push) + DOCKER_PUSH="true" + ;; + *) + echo "[WARNING] $0 : Argument '$1' unknown. Ignoring." + ;; + esac + shift +done + +if [ -z "$DOCKER_TAG" ]; then + echo "[ERROR] please set a tag!" + help exit 1 fi -DOCKER_TAG=$1 - # Build -docker build --pull --tag ${DOCKER_REPO}/${DOCKER_IMAGE}:${DOCKER_TAG} -f ${SCRIPTPATH}/Dockerfile ${SCRIPTPATH} +docker build --pull --tag "$DOCKER_IMAGE:$DOCKER_TAG" -f "$SCRIPTPATH/Dockerfile" "$SCRIPTPATH" # Tag -docker tag ${DOCKER_REPO}/${DOCKER_IMAGE}:${DOCKER_TAG} ${DOCKER_REPO}/${DOCKER_IMAGE}:latest +docker tag "$DOCKER_IMAGE:$DOCKER_TAG" "$DOCKER_IMAGE:latest" -if [ ${DOCKER_TAG} != "NONE" ]; then - # push - docker push ${DOCKER_REPO}/${DOCKER_IMAGE}:${DOCKER_TAG} - docker push ${DOCKER_REPO}/${DOCKER_IMAGE}:latest +if [ "$DOCKER_PUSH" == "true" ]; then + docker push "$DOCKER_IMAGE:$DOCKER_TAG" + docker push "$DOCKER_IMAGE:latest" fi diff --git a/build-scripts/docker-build-env/run-docker.sh b/build-scripts/docker-build-env/run-docker.sh index 70a6e3f..06cacca 100755 --- a/build-scripts/docker-build-env/run-docker.sh +++ b/build-scripts/docker-build-env/run-docker.sh @@ -1,5 +1,4 @@ #!/bin/bash - set -e DOCKER_TIMEOUT=20 # Wait 20 seconds for docker to start @@ -10,23 +9,23 @@ cleanup() { # Stop docker gracefully echo "[INFO] Stopping in container docker..." DOCKERPIDFILE=/var/run/docker.pid - if [ -f $DOCKERPIDFILE ] && [ -s $DOCKERPIDFILE ] && ps $(cat $DOCKERPIDFILE) | grep -q docker; then - kill $(cat $DOCKERPIDFILE) + if [ -f $DOCKERPIDFILE ] && [ -s $DOCKERPIDFILE ] && pgrep -F $DOCKERPIDFILE; then + kill "$(cat $DOCKERPIDFILE)" # Now wait for it to die STARTTIME=$(date +%s) ENDTIME=$(date +%s) - while [ -f $DOCKERPIDFILE ] && [ -s $DOCKERPIDFILE ] && ps $(cat $DOCKERPIDFILE) | grep -q docker; do - if [ $(($ENDTIME - $STARTTIME)) -le $DOCKER_TIMEOUT ]; then + while [ -f $DOCKERPIDFILE ] && [ -s $DOCKERPIDFILE ] && pgrep -F $DOCKERPIDFILE; do + if [ $((ENDTIME - STARTTIME)) -le $DOCKER_TIMEOUT ]; then sleep 1 ENDTIME=$(date +%s) else - echo "[ERROR] Timeout while waiting for in container docker to die." + echo "[ERROR] Timeout while waiting for in container docker to die" exit 1 fi done else - echo "[WARN] Can't stop docker container." - echo "[WARN] Your host might have been left with unreleased resources (ex. loop devices)." + echo "[WARN] Can't stop docker container" + echo "[WARN] Your host might have been left with unreleased resources (ex. loop devices)" fi if [ "$1" == "fail" ]; then @@ -36,7 +35,7 @@ cleanup() { trap 'cleanup fail' SIGINT SIGTERM # Start docker -echo "[INFO] Setup qemu-arm." +echo "[INFO] Setup crosscompiling feature" mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc update-binfmts --enable qemu-arm update-binfmts --enable qemu-aarch64 @@ -48,29 +47,28 @@ echo "[INFO] Waiting for docker to initialize..." STARTTIME=$(date +%s) ENDTIME=$(date +%s) until docker info >/dev/null 2>&1; do - if [ $(($ENDTIME - $STARTTIME)) -le $DOCKER_TIMEOUT ]; then + if [ $((ENDTIME - STARTTIME)) -le $DOCKER_TIMEOUT ]; then sleep 1 ENDTIME=$(date +%s) else - echo "[ERROR] Timeout while waiting for docker to come up." + echo "[ERROR] Timeout while waiting for docker to come up" exit 1 fi done -echo "[INFO] Docker was initialized." +echo "[INFO] Docker was initialized" # Start barys with all the arguments requested echo "[INFO] Running build..." # Build -docker build --pull --tag ${DOCKER_REPO}/${DOCKER_IMAGE}:${DOCKER_TAG} . -# Tag -docker tag ${DOCKER_REPO}/${DOCKER_IMAGE}:${DOCKER_TAG} ${DOCKER_REPO}/${DOCKER_IMAGE}:latest +docker build --pull --tag "$DOCKER_IMAGE:$DOCKER_TAG" . +docker tag "$DOCKER_IMAGE:$DOCKER_TAG" "$DOCKER_IMAGE:latest" echo "[INFO] Push image" -if [ ${DOCKER_TAG} != "NONE" ]; then +if [ "$DOCKER_PUSH" == "true" ]; then # push - docker push ${DOCKER_REPO}/${DOCKER_IMAGE}:${DOCKER_TAG} - docker push ${DOCKER_REPO}/${DOCKER_IMAGE}:latest + docker push "$DOCKER_IMAGE:$DOCKER_TAG" + docker push "$DOCKER_IMAGE:latest" fi -cleanup +cleanup "okay" exit 0 diff --git a/build-scripts/hassio-supervisor/create_all.sh b/build-scripts/hassio-supervisor/create_all.sh index 81fe5cf..d55c89f 100755 --- a/build-scripts/hassio-supervisor/create_all.sh +++ b/build-scripts/hassio-supervisor/create_all.sh @@ -1,15 +1,7 @@ #!/bin/bash - set -e -# Sanity checks -if [ "$#" -ne 1 ]; then - echo "Usage: create_all.sh |NONE" - echo "Optional environment: BUILD_DIR" - exit 1 -fi - for arch in "armhf" "aarch64" "i386" "amd64" do - ./create_hassio_supervisor.sh $arch $1 + ./create_hassio_supervisor.sh -a $arch "$@" done diff --git a/build-scripts/hassio-supervisor/create_hassio_supervisor.sh b/build-scripts/hassio-supervisor/create_hassio_supervisor.sh index 09eb22b..b7bed4a 100755 --- a/build-scripts/hassio-supervisor/create_hassio_supervisor.sh +++ b/build-scripts/hassio-supervisor/create_hassio_supervisor.sh @@ -1,9 +1,11 @@ #!/bin/bash - set -e BUILD_CONTAINER_NAME=hassio-build-$$ -DOCKER_REPO=homeassistant +DOCKER_PUSH="false" +DOCKER_HUB=homeassistant +BRANCH=master +REPOSITORY=https://github.com/home-assistant/hassio cleanup() { echo "[INFO] Cleanup." @@ -19,60 +21,122 @@ cleanup() { } trap 'cleanup fail' SIGINT SIGTERM +help () { + cat << EOF +Script for hassio docker build +create_hassio_supervisor [options] + +Options: + -h, --help + Display this help and exit. + + -r, --repository https://.../hassio + Set git repository to load Hass.IO from. + -b, --branch branch_name + Set git repository to load Hass.IO from. + + -h, --hub hubname + Set user of dockerhub build. + + -a, --arch armhf|aarch64|i386|amd64 + Arch for Hass.IO build. + -v, --version X.Y + Version/Tag of Hass.IO build. + -p, --push + Upload the build to docker hub. +EOF +} + +# Parse arguments +while [[ $# -gt 0 ]]; do + key=$1 + case $key in + -h|--help) + help + exit 0 + ;; + -h|--hub) + DOCKER_HUB=$2 + shift + ;; + -r|--repository) + REPOSITORY=$2 + shift + ;; + -b|--branch) + BRANCH=$2 + shift + ;; + -a|--arch) + ARCH=$2 + shift + ;; + -v|--version) + DOCKER_TAG=$2 + shift + ;; + -p|--push) + DOCKER_PUSH="true" + ;; + *) + echo "[WARNING] $0 : Argument '$1' unknown. Ignoring." + ;; + esac + shift +done + # Sanity checks -if [ "$#" -ne 2 ]; then - echo "Usage: create_hassio_supervisor.sh |NONE" - echo "Optional environment: BUILD_DIR BRANCH" +if [ "$ARCH" != 'armhf' ] && [ "$ARCH" != 'aarch64' ] && [ "$ARCH" != 'i386' ] && [ "$ARCH" != 'amd64' ]; then + echo "Error: $ARCH is not a supported platform for hassio-supervisor!" + help exit 1 fi -if [ $1 != 'armhf' ] && [ $1 != 'aarch64' ] && [ $1 != 'i386' ] && [ $1 != 'amd64' ]; then - echo "Error: $1 is not a supported platform for hassio-supervisor!" +if [ -z "$DOCKER_TAG" ]; then + echo "[ERROR] please set a version!" + help exit 1 fi # Get the absolute script location -pushd `dirname $0` > /dev/null 2>&1 -SCRIPTPATH=`pwd` +pushd "$(dirname "$0")" > /dev/null 2>&1 +SCRIPTPATH=$(pwd) popd > /dev/null 2>&1 -ARCH=$1 -BASE_IMAGE="resin\/${ARCH}-alpine:3.5" -DOCKER_TAG=$2 -DOCKER_IMAGE=${ARCH}-hassio-supervisor +BASE_IMAGE="resin\/$ARCH-alpine:3.5" +DOCKER_IMAGE=$DOCKER_HUB/$ARCH-hassio-supervisor BUILD_DIR=${BUILD_DIR:=$SCRIPTPATH} -WORKSPACE=${BUILD_DIR:=$SCRIPTPATH}/hassio-supervisor -BRANCH=${BRANCH:=master} +WORKSPACE=${BUILD_DIR:=$SCRIPTPATH}/hassio-supervisor-$ARCH # setup docker echo "[INFO] Setup docker for supervisor" -mkdir -p $BUILD_DIR -mkdir -p $WORKSPACE +mkdir -p "$BUILD_DIR" +mkdir -p "$WORKSPACE" -cp ../../supervisor/Dockerfile $WORKSPACE/Dockerfile -sed -i "s/%%BASE_IMAGE%%/${BASE_IMAGE}/g" $WORKSPACE/Dockerfile -sed -i "s/%%SUPERVISOR_TAG%%/${DOCKER_TAG}/g" $WORKSPACE/Dockerfile +cp ../../supervisor/Dockerfile "$WORKSPACE/Dockerfile" +sed -i "s/%%BASE_IMAGE%%/${BASE_IMAGE}/g" "$WORKSPACE/Dockerfile" +sed -i "s/%%SUPERVISOR_TAG%%/${DOCKER_TAG}/g" "$WORKSPACE/Dockerfile" -git clone https://github.com/home-assistant/hassio $WORKSPACE/hassio_api -cd $WORKSPACE/hassio_api && git checkout $BRANCH +git clone "$REPOSITORY" "$WORKSPACE/hassio_api" +cd "$WORKSPACE/hassio_api" && git checkout "$BRANCH" # Run build echo "[INFO] start docker build" docker stop $BUILD_CONTAINER_NAME 2> /dev/null || true docker rm --volumes $BUILD_CONTAINER_NAME 2> /dev/null || true docker run --rm \ - -v $WORKSPACE:/docker \ + -v "$WORKSPACE":/docker \ -v ~/.docker:/root/.docker \ - -e DOCKER_REPO=$DOCKER_REPO \ - -e DOCKER_IMAGE=$DOCKER_IMAGE \ - -e DOCKER_TAG=$DOCKER_TAG \ + -e DOCKER_PUSH=$DOCKER_PUSH \ + -e DOCKER_IMAGE="$DOCKER_IMAGE" \ + -e DOCKER_TAG="$DOCKER_TAG" \ --name $BUILD_CONTAINER_NAME \ --privileged \ homeassistant/docker-build-env \ /run-docker.sh echo "[INFO] cleanup WORKSPACE" -cd $BUILD_DIR -rm -rf $WORKSPACE +cd "$BUILD_DIR" +rm -rf "$WORKSPACE" -cleanup +cleanup "okay" exit 0 diff --git a/build-scripts/homeassistant/create_all.sh b/build-scripts/homeassistant/create_all.sh index 4358605..fa7e84c 100755 --- a/build-scripts/homeassistant/create_all.sh +++ b/build-scripts/homeassistant/create_all.sh @@ -1,16 +1,8 @@ #!/bin/bash - set -e -# Sanity checks -if [ "$#" -ne 1 ]; then - echo "Usage: create_all.sh " - echo "Optional environment: BUILD_DIR" - exit 1 -fi - for machine in "raspberrypi3" "raspberrypi2" "raspberrypi" "qemux86" "qemux86-64" do - ./create_homeassistant.sh $1 $machine & + ./create_homeassistant.sh -m $machine "@$" & done wait diff --git a/build-scripts/homeassistant/create_homeassistant.sh b/build-scripts/homeassistant/create_homeassistant.sh index d0a64f2..c13a659 100755 --- a/build-scripts/homeassistant/create_homeassistant.sh +++ b/build-scripts/homeassistant/create_homeassistant.sh @@ -1,9 +1,9 @@ #!/bin/bash - set -e BUILD_CONTAINER_NAME=homeassistant-build-$$ -DOCKER_REPO=homeassistant +DOCKER_PUSH="false" +DOCKER_HUB=homeassistant cleanup() { echo "[INFO] Cleanup." @@ -19,25 +19,78 @@ cleanup() { } trap 'cleanup fail' SIGINT SIGTERM +help () { + cat << EOF +Script for homeassistant docker build +create_homeassistant [options] + +Options: + -h, --help + Display this help and exit. + + -h, --hub hubname + Set user of dockerhub build. + + -m, --machine name + Machine type for HomeAssistant build. + -v, --version X.Y + Version/Tag of HomeAssistant build. + -p, --push + Upload the build to docker hub. +EOF +} + +# Parse arguments +while [[ $# -gt 0 ]]; do + key=$1 + case $key in + -h|--help) + help + exit 0 + ;; + -h|--hub) + DOCKER_HUB=$2 + shift + ;; + -m|--machine) + MACHINE=$2 + shift + ;; + -v|--version) + DOCKER_TAG=$2 + shift + ;; + -p|--push) + DOCKER_PUSH="true" + ;; + *) + echo "[WARNING] $0 : Argument '$1' unknown. Ignoring." + ;; + esac + shift +done + # Sanity checks -if [ "$#" -ne 2 ]; then - echo "Usage: create_homeassistant.sh " - echo "Optional environment: BUILD_DIR" +if [ -z "$MACHINE" ]; then + echo "[ERROR] please set a machine!" + help + exit 1 +fi +if [ -z "$DOCKER_TAG" ]; then + echo "[ERROR] please set a version!" + help exit 1 fi # Get the absolute script location -pushd `dirname $0` > /dev/null 2>&1 -SCRIPTPATH=`pwd` +pushd "$(dirname "$0")" > /dev/null 2>&1 +SCRIPTPATH=$(pwd) popd > /dev/null 2>&1 -HASS_VERS=$1 -MACHINE=$2 -DOCKER_TAG=$1 -DOCKER_IMAGE=${MACHINE}-homeassistant +DOCKER_IMAGE=$DOCKER_HUB/$MACHINE-homeassistant BUILD_DIR=${BUILD_DIR:=$SCRIPTPATH} -WORKSPACE=${BUILD_DIR}/hass -HASS_GIT=${BUILD_DIR}/hass_git +WORKSPACE=$BUILD_DIR/hass +HASS_GIT=$BUILD_DIR/hass_git # generate base image case $MACHINE in @@ -57,38 +110,38 @@ esac # setup docker echo "[INFO] Setup docker for homeassistant" -mkdir -p $BUILD_DIR -mkdir -p $WORKSPACE +mkdir -p "$BUILD_DIR" +mkdir -p "$WORKSPACE" echo "[INFO] load homeassistant" -cp ../../homeassistant/Dockerfile $WORKSPACE/Dockerfile +cp ../../homeassistant/Dockerfile "$WORKSPACE/Dockerfile" -sed -i "s/%%BASE_IMAGE%%/${BASE_IMAGE}/g" $WORKSPACE/Dockerfile -sed -i "s/%%HASS_VERSION%%/${HASS_VERS}/g" $WORKSPACE/Dockerfile +sed -i "s/%%BASE_IMAGE%%/${BASE_IMAGE}/g" "$WORKSPACE/Dockerfile" +sed -i "s/%%HASS_VERSION%%/${HASS_VERS}/g" "$WORKSPACE/Dockerfile" -git clone https://github.com/home-assistant/home-assistant $HASS_GIT -cd $HASS_GIT && git checkout $HASS_VERS -cp $HASS_GIT/requirements_all.txt $WORKSPACE/ +git clone https://github.com/home-assistant/home-assistant "$HASS_GIT" +cd "$HASS_GIT" && git checkout "$DOCKER_TAG" +cp "$HASS_GIT/requirements_all.txt" "$WORKSPACE/" # Run build echo "[INFO] start docker build" docker stop $BUILD_CONTAINER_NAME 2> /dev/null || true docker rm --volumes $BUILD_CONTAINER_NAME 2> /dev/null || true docker run --rm \ - -v $WORKSPACE:/docker \ + -v "$WORKSPACE":/docker \ -v ~/.docker:/root/.docker \ - -e DOCKER_REPO=$DOCKER_REPO \ - -e DOCKER_IMAGE=$DOCKER_IMAGE \ - -e DOCKER_TAG=$DOCKER_TAG \ + -e DOCKER_PUSH=$DOCKER_PUSH \ + -e DOCKER_IMAGE="$DOCKER_IMAGE" \ + -e DOCKER_TAG="$DOCKER_TAG" \ --name $BUILD_CONTAINER_NAME \ --privileged \ homeassistant/docker-build-env \ /run-docker.sh echo "[INFO] cleanup WORKSPACE" -cd $BUILD_DIR -rm -rf $WORKSPACE -rm -rf $HASS_GIT +cd "$BUILD_DIR" +rm -rf "$WORKSPACE" +rm -rf "$HASS_GIT" -cleanup +cleanup "okay" exit 0