read version from setup.py
This commit is contained in:
parent
cedef90d34
commit
4dd0b8b11e
1 changed files with 166 additions and 2 deletions
|
@ -35,7 +35,7 @@ Options:
|
||||||
-m, --machine name
|
-m, --machine name
|
||||||
Machine type for HomeAssistant build.
|
Machine type for HomeAssistant build.
|
||||||
-v, --version X.Y
|
-v, --version X.Y
|
||||||
Version/Tag of HomeAssistant build.
|
Version/Tag/branch of HomeAssistant build.
|
||||||
-p, --push
|
-p, --push
|
||||||
Upload the build to docker hub.
|
Upload the build to docker hub.
|
||||||
-n, --no-cache
|
-n, --no-cache
|
||||||
|
@ -83,7 +83,112 @@ if [ -z "$MACHINE" ]; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
if [ -z "$DOCKER_TAG" ]; then
|
if [ -z "$DOCKER_TAG" ]; then
|
||||||
echo "[ERROR] please set a version!"
|
echo "[ERROR] please set a version/branch!"
|
||||||
|
help
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Get the absolute script location
|
||||||
|
pushd "$(dirname "$0")" > /dev/null 2>&1
|
||||||
|
SCRIPTPATH=$(pwd)
|
||||||
|
popd > /dev/null 2>&1
|
||||||
|
|
||||||
|
DOCKER_IMAGE=$DOCKER_HUB/$MACHINE-homeassistant
|
||||||
|
BUILD_DIR=${BUILD_DIR:=$SCRIPTPATH}
|
||||||
|
WORKSPACE=$BUILD_DIR/hass-$MACHINE
|
||||||
|
HASS_GIT=$WORKSPACE/homeassistant
|
||||||
|
|
||||||
|
# generate base image
|
||||||
|
case $MACHINE in
|
||||||
|
"raspberrypi1")
|
||||||
|
BASE_IMAGE="resin\/raspberry-pi-alpine-python:3.6"
|
||||||
|
;;
|
||||||
|
"raspberrypi2")#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
BUILD_CONTAINER_NAME=homeassistant-build-$$
|
||||||
|
DOCKER_PUSH="false"
|
||||||
|
DOCKER_CACHE="true"
|
||||||
|
DOCKER_HUB=homeassistant
|
||||||
|
|
||||||
|
cleanup() {
|
||||||
|
echo "[INFO] Cleanup."
|
||||||
|
|
||||||
|
# Stop docker container
|
||||||
|
echo "[INFO] Cleaning up homeassistant-build container."
|
||||||
|
docker stop $BUILD_CONTAINER_NAME 2> /dev/null || true
|
||||||
|
docker rm --volumes $BUILD_CONTAINER_NAME 2> /dev/null || true
|
||||||
|
|
||||||
|
if [ "$1" == "fail" ]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
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/branch of HomeAssistant build.
|
||||||
|
-p, --push
|
||||||
|
Upload the build to docker hub.
|
||||||
|
-n, --no-cache
|
||||||
|
Disable build from cache
|
||||||
|
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"
|
||||||
|
;;
|
||||||
|
-n|--no-cache)
|
||||||
|
DOCKER_CACHE="false"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "[WARNING] $0 : Argument '$1' unknown. Ignoring."
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
# Sanity checks
|
||||||
|
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/branch!"
|
||||||
help
|
help
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
@ -127,6 +232,65 @@ sed -i "s/%%VERSION%%/${DOCKER_TAG}/g" "$WORKSPACE/Dockerfile"
|
||||||
echo "LABEL io.hass.version=\"$DOCKER_TAG\" io.hass.type=\"homeassistant\" io.hass.machine=\"$MACHINE\"" >> "$WORKSPACE/Dockerfile"
|
echo "LABEL io.hass.version=\"$DOCKER_TAG\" io.hass.type=\"homeassistant\" io.hass.machine=\"$MACHINE\"" >> "$WORKSPACE/Dockerfile"
|
||||||
|
|
||||||
git clone --depth 1 -b "$DOCKER_TAG" https://github.com/home-assistant/home-assistant "$HASS_GIT"
|
git clone --depth 1 -b "$DOCKER_TAG" https://github.com/home-assistant/home-assistant "$HASS_GIT"
|
||||||
|
DOCKER_TAG="$(python3 "$HASS_GIT/setup.py" -V)"
|
||||||
|
|
||||||
|
if [ -z "$DOCKER_TAG" ]; then
|
||||||
|
echo "[ERROR] Can't read homeassistant version!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 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 ~/.docker:/root/.docker \
|
||||||
|
-e DOCKER_PUSH=$DOCKER_PUSH \
|
||||||
|
-e DOCKER_CACHE=$DOCKER_CACHE \
|
||||||
|
-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"
|
||||||
|
|
||||||
|
cleanup "okay"
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
BASE_IMAGE="resin\/raspberry-pi2-alpine-python:3.6"
|
||||||
|
;;
|
||||||
|
"raspberrypi3")
|
||||||
|
BASE_IMAGE="resin\/raspberry-pi3-alpine-python:3.6"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
BASE_IMAGE="resin\/${MACHINE}-alpine-python:3.6"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# setup docker
|
||||||
|
echo "[INFO] Setup docker for homeassistant"
|
||||||
|
mkdir -p "$BUILD_DIR"
|
||||||
|
mkdir -p "$WORKSPACE"
|
||||||
|
|
||||||
|
echo "[INFO] load homeassistant"
|
||||||
|
cp ../../homeassistant/Dockerfile "$WORKSPACE/Dockerfile"
|
||||||
|
|
||||||
|
sed -i "s/%%BASE_IMAGE%%/${BASE_IMAGE}/g" "$WORKSPACE/Dockerfile"
|
||||||
|
sed -i "s/%%VERSION%%/${DOCKER_TAG}/g" "$WORKSPACE/Dockerfile"
|
||||||
|
echo "LABEL io.hass.version=\"$DOCKER_TAG\" io.hass.type=\"homeassistant\" io.hass.machine=\"$MACHINE\"" >> "$WORKSPACE/Dockerfile"
|
||||||
|
|
||||||
|
git clone --depth 1 -b "$DOCKER_TAG" https://github.com/home-assistant/home-assistant "$HASS_GIT"
|
||||||
|
DOCKER_TAG="$(python3 "$HASS_GIT/setup.py" -V)"
|
||||||
|
|
||||||
|
if [ -z "$DOCKER_TAG" ]; then
|
||||||
|
echo "[ERROR] Can't read homeassistant version!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
# Run build
|
# Run build
|
||||||
echo "[INFO] start docker build"
|
echo "[INFO] start docker build"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue