Add machine build, cleanup old stuff
This commit is contained in:
parent
86abce4897
commit
3d92fc2375
10 changed files with 47 additions and 501 deletions
|
@ -1,34 +0,0 @@
|
||||||
FROM ubuntu:16.04
|
|
||||||
|
|
||||||
# setup locals
|
|
||||||
RUN apt-get update && apt-get install -y \
|
|
||||||
locales \
|
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
|
||||||
RUN locale-gen en_US.UTF-8
|
|
||||||
ENV LANG en_US.UTF-8
|
|
||||||
|
|
||||||
# Install docker
|
|
||||||
# https://docs.docker.com/engine/installation/linux/ubuntu/#install-using-the-repository
|
|
||||||
RUN apt-get update && apt-get install -y \
|
|
||||||
apt-transport-https \
|
|
||||||
ca-certificates \
|
|
||||||
curl \
|
|
||||||
software-properties-common \
|
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
|
||||||
VOLUME /var/lib/docker
|
|
||||||
RUN curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
|
|
||||||
RUN add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
|
|
||||||
RUN apt-get update && apt-get install -y \
|
|
||||||
docker-ce \
|
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
|
||||||
|
|
||||||
# setup arm binary support
|
|
||||||
RUN apt-get update && apt-get install -y \
|
|
||||||
qemu-user-static \
|
|
||||||
binfmt-support \
|
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
|
||||||
|
|
||||||
COPY run-docker.sh /
|
|
||||||
RUN chmod a+x /run-docker.sh
|
|
||||||
|
|
||||||
WORKDIR /docker
|
|
|
@ -1,54 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
set -e
|
|
||||||
|
|
||||||
DOCKER_IMAGE=${DOCKER_IMAGE:="homeassistant/docker-build-env"}
|
|
||||||
DOCKER_TAG="$(date +%Y%m%d)"
|
|
||||||
DOCKER_PUSH="false"
|
|
||||||
|
|
||||||
# Get the absolute script location
|
|
||||||
pushd "$(dirname "$0")" > /dev/null 2>&1
|
|
||||||
SCRIPTPATH=$(pwd)
|
|
||||||
popd > /dev/null 2>&1
|
|
||||||
|
|
||||||
help () {
|
|
||||||
cat << EOF
|
|
||||||
Script for hassio docker build environment
|
|
||||||
create_build_env [options]
|
|
||||||
|
|
||||||
Options:
|
|
||||||
-h, --help
|
|
||||||
Display this help and exit.
|
|
||||||
|
|
||||||
-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
|
|
||||||
;;
|
|
||||||
-p|--push)
|
|
||||||
DOCKER_PUSH="true"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "[WARNING] $0 : Argument '$1' unknown. Ignoring."
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
shift
|
|
||||||
done
|
|
||||||
|
|
||||||
# Build
|
|
||||||
docker build --pull --tag "$DOCKER_IMAGE:$DOCKER_TAG" -f "$SCRIPTPATH/Dockerfile" "$SCRIPTPATH"
|
|
||||||
|
|
||||||
# Tag
|
|
||||||
docker tag "$DOCKER_IMAGE:$DOCKER_TAG" "$DOCKER_IMAGE:latest"
|
|
||||||
|
|
||||||
if [ "$DOCKER_PUSH" == "true" ]; then
|
|
||||||
docker push "$DOCKER_IMAGE:$DOCKER_TAG"
|
|
||||||
docker push "$DOCKER_IMAGE:latest"
|
|
||||||
fi
|
|
|
@ -1,87 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
set -e
|
|
||||||
|
|
||||||
DOCKER_TIMEOUT=20 # Wait 20 seconds for docker to start
|
|
||||||
|
|
||||||
cleanup() {
|
|
||||||
echo "[INFO] Running cleanup..."
|
|
||||||
|
|
||||||
# Stop docker gracefully
|
|
||||||
echo "[INFO] Stopping in container docker..."
|
|
||||||
DOCKERPIDFILE=/var/run/docker.pid
|
|
||||||
if [ -f $DOCKERPIDFILE ] && [ -s $DOCKERPIDFILE ] && pgrep -F $DOCKERPIDFILE > /dev/null; then
|
|
||||||
kill "$(cat $DOCKERPIDFILE)"
|
|
||||||
# Now wait for it to die
|
|
||||||
STARTTIME=$(date +%s)
|
|
||||||
ENDTIME=$(date +%s)
|
|
||||||
while [ -f $DOCKERPIDFILE ] && [ -s $DOCKERPIDFILE ] && pgrep -F $DOCKERPIDFILE > /dev/null; 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"
|
|
||||||
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)"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$1" == "fail" ]; then
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
trap 'cleanup fail' SIGINT SIGTERM
|
|
||||||
|
|
||||||
# Start docker
|
|
||||||
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
|
|
||||||
|
|
||||||
# Start docker
|
|
||||||
echo "[INFO] Starting docker."
|
|
||||||
dockerd 2> /dev/null &
|
|
||||||
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
|
|
||||||
sleep 1
|
|
||||||
ENDTIME=$(date +%s)
|
|
||||||
else
|
|
||||||
echo "[ERROR] Timeout while waiting for docker to come up"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
echo "[INFO] Docker was initialized"
|
|
||||||
|
|
||||||
# Start barys with all the arguments requested
|
|
||||||
echo "[INFO] Running build..."
|
|
||||||
|
|
||||||
if "$DOCKER_CACHE" == "true" && docker pull "$DOCKER_IMAGE:latest" > /dev/null 2>&1
|
|
||||||
then
|
|
||||||
docker build --pull --tag "$DOCKER_IMAGE:$DOCKER_TAG" --cache-from "$DOCKER_IMAGE:latest" .
|
|
||||||
else
|
|
||||||
docker build --pull --tag "$DOCKER_IMAGE:$DOCKER_TAG" .
|
|
||||||
fi
|
|
||||||
|
|
||||||
# tag as latest
|
|
||||||
if [ "$DOCKER_WITH_LATEST" == "true" ]; then
|
|
||||||
docker tag "$DOCKER_IMAGE:$DOCKER_TAG" "$DOCKER_IMAGE:latest"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "[INFO] Push image"
|
|
||||||
if [ "$DOCKER_PUSH" == "true" ]; then
|
|
||||||
# push
|
|
||||||
docker push "$DOCKER_IMAGE:$DOCKER_TAG"
|
|
||||||
|
|
||||||
# latest
|
|
||||||
if [ "$DOCKER_WITH_LATEST" == "true" ]; then
|
|
||||||
docker push "$DOCKER_IMAGE:latest"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
cleanup "okay"
|
|
||||||
exit 0
|
|
|
@ -1,8 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
set -e
|
|
||||||
|
|
||||||
for arch in "armhf" "aarch64" "i386" "amd64"
|
|
||||||
do
|
|
||||||
./create_hassio_cluster.sh -a $arch "$@" &
|
|
||||||
done
|
|
||||||
wait
|
|
|
@ -1,135 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
set -e
|
|
||||||
|
|
||||||
BUILD_CONTAINER_NAME=hassio-cluster-build-$$
|
|
||||||
DOCKER_PUSH="true"
|
|
||||||
DOCKER_CACHE="true"
|
|
||||||
DOCKER_WITH_LATEST="true"
|
|
||||||
DOCKER_HUB=homeassistant
|
|
||||||
|
|
||||||
cleanup() {
|
|
||||||
echo "[INFO] Cleanup."
|
|
||||||
|
|
||||||
# Stop docker container
|
|
||||||
echo "[INFO] Cleaning up hassio-cluster-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 hassio docker build
|
|
||||||
create_hassio_cluster [options]
|
|
||||||
|
|
||||||
Options:
|
|
||||||
-h, --help
|
|
||||||
Display this help and exit.
|
|
||||||
|
|
||||||
-v, --version xy
|
|
||||||
Set version of cluster image from.
|
|
||||||
|
|
||||||
-d, --dockerhub hubname
|
|
||||||
Set user of dockerhub build.
|
|
||||||
|
|
||||||
-a, --arch armhf|aarch64|i386|amd64
|
|
||||||
Arch for Hass.IO build.
|
|
||||||
-t, --test
|
|
||||||
Don't 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
|
|
||||||
;;
|
|
||||||
-d|--dockerhub)
|
|
||||||
DOCKER_HUB=$2
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
-v|--version)
|
|
||||||
DOCKER_TAG=$2
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
-a|--arch)
|
|
||||||
ARCH=$2
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
-t|--test)
|
|
||||||
DOCKER_PUSH="false"
|
|
||||||
;;
|
|
||||||
-n|--no-cache)
|
|
||||||
DOCKER_CACHE="false"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "[WARNING] $0 : Argument '$1' unknown. Ignoring."
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
shift
|
|
||||||
done
|
|
||||||
|
|
||||||
# Sanity checks
|
|
||||||
if [ "$ARCH" != 'armhf' ] && [ "$ARCH" != 'aarch64' ] && [ "$ARCH" != 'i386' ] && [ "$ARCH" != 'amd64' ]; then
|
|
||||||
echo "Error: $ARCH is not a supported platform for hassio-cluster!"
|
|
||||||
help
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if [ -z "$DOCKER_TAG" ]; then
|
|
||||||
echo "Error: need set a version!"
|
|
||||||
help
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Get the absolute script location
|
|
||||||
pushd "$(dirname "$0")" > /dev/null 2>&1
|
|
||||||
SCRIPTPATH=$(pwd)
|
|
||||||
popd > /dev/null 2>&1
|
|
||||||
|
|
||||||
BASE_IMAGE="homeassistant\/$ARCH-base:latest"
|
|
||||||
DOCKER_IMAGE=$DOCKER_HUB/$ARCH-hassio-cluster
|
|
||||||
BUILD_DIR=${BUILD_DIR:=$SCRIPTPATH}
|
|
||||||
WORKSPACE=${BUILD_DIR:=$SCRIPTPATH}/hassio-cluster-$ARCH
|
|
||||||
|
|
||||||
# setup docker
|
|
||||||
echo "[INFO] Setup docker for cluster"
|
|
||||||
mkdir -p "$BUILD_DIR"
|
|
||||||
|
|
||||||
cp -r ../../cluster "$WORKSPACE"
|
|
||||||
sed -i "s/%%BASE_IMAGE%%/${BASE_IMAGE}/g" "$WORKSPACE/Dockerfile"
|
|
||||||
|
|
||||||
echo "LABEL io.hass.version=\"$DOCKER_TAG\" io.hass.arch=\"$ARCH\" io.hass.type=\"cluster\"" >> "$WORKSPACE/Dockerfile"
|
|
||||||
echo "[INFO] prepare $DOCKER_IMAGE:$DOCKER_TAG done"
|
|
||||||
|
|
||||||
# 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_WITH_LATEST=$DOCKER_WITH_LATEST \
|
|
||||||
-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
|
|
|
@ -1,8 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
set -e
|
|
||||||
|
|
||||||
for machine in "raspberrypi3" "raspberrypi2" "raspberrypi" "qemux86" "qemux86-64" "intel-nuc"
|
|
||||||
do
|
|
||||||
./create_homeassistant.sh -m $machine "$@" &
|
|
||||||
done
|
|
||||||
wait
|
|
|
@ -1,129 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
set -e
|
|
||||||
|
|
||||||
BUILD_CONTAINER_NAME=homeassistant-build-$$
|
|
||||||
DOCKER_PUSH="true"
|
|
||||||
DOCKER_CACHE="false"
|
|
||||||
DOCKER_WITH_LATEST="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.
|
|
||||||
-t, --test
|
|
||||||
Don't 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
|
|
||||||
;;
|
|
||||||
-t|--test)
|
|
||||||
DOCKER_PUSH="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
|
|
||||||
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
|
|
||||||
|
|
||||||
# setup docker
|
|
||||||
echo "[INFO] Setup docker for homeassistant"
|
|
||||||
mkdir -p "$BUILD_DIR"
|
|
||||||
mkdir -p "$WORKSPACE"
|
|
||||||
|
|
||||||
echo "[INFO] load homeassistant"
|
|
||||||
cp "../../homeassistant/machine/$MACHINE" "$WORKSPACE/Dockerfile"
|
|
||||||
|
|
||||||
sed -i "s/%%VERSION%%/${DOCKER_TAG}/g" "$WORKSPACE/Dockerfile"
|
|
||||||
echo "[INFO] prepare done for $DOCKER_IMAGE:$DOCKER_TAG"
|
|
||||||
|
|
||||||
# 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_WITH_LATEST=$DOCKER_WITH_LATEST \
|
|
||||||
-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
|
|
|
@ -145,10 +145,9 @@ function run_build() {
|
||||||
local repository=$2
|
local repository=$2
|
||||||
local image=$3
|
local image=$3
|
||||||
local version=$4
|
local version=$4
|
||||||
local build_type=$5
|
local build_from=$5
|
||||||
local build_from=$6
|
local build_arch=$6
|
||||||
local build_arch=$7
|
local docker_cli=("${!7}")
|
||||||
local docker_cli=("${!8}")
|
|
||||||
|
|
||||||
local push_images=()
|
local push_images=()
|
||||||
|
|
||||||
|
@ -170,15 +169,18 @@ function run_build() {
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# do we know the arch of build?
|
||||||
|
if [ ! -z "$build_arch" ]; then
|
||||||
|
docker_cli+=("--label" "io.hass.arch=$build_arch")
|
||||||
|
docker_cli+=("--build-arg" "BUILD_ARCH=$build_arch")
|
||||||
|
fi
|
||||||
|
|
||||||
# Build image
|
# Build image
|
||||||
echo "[INFO] Run build for $repository/$image:$version"
|
echo "[INFO] Run build for $repository/$image:$version"
|
||||||
docker build -t "$repository/$image:$version" \
|
docker build -t "$repository/$image:$version" \
|
||||||
--label "io.hass.version=$version" \
|
--label "io.hass.version=$version" \
|
||||||
--label "io.hass.type=$build_type" \
|
|
||||||
--label "io.hass.arch=$build_arch" \
|
|
||||||
--build-arg "BUILD_FROM=$build_from" \
|
--build-arg "BUILD_FROM=$build_from" \
|
||||||
--build-arg "BUILD_VERSION=$version" \
|
--build-arg "BUILD_VERSION=$version" \
|
||||||
--build-arg "BUILD_ARCH=$build_arch" \
|
|
||||||
"${docker_cli[@]}" \
|
"${docker_cli[@]}" \
|
||||||
"$build_dir"
|
"$build_dir"
|
||||||
|
|
||||||
|
@ -246,6 +248,7 @@ function build_addon() {
|
||||||
# Set additional labels
|
# Set additional labels
|
||||||
docker_cli+=("--label" "io.hass.name=$name")
|
docker_cli+=("--label" "io.hass.name=$name")
|
||||||
docker_cli+=("--label" "io.hass.description=$description")
|
docker_cli+=("--label" "io.hass.description=$description")
|
||||||
|
docker_cli+=("--label" "io.hass.type=addon")
|
||||||
|
|
||||||
if [ ! -z "$url" ]; then
|
if [ ! -z "$url" ]; then
|
||||||
docker_cli+=("--label" "io.hass.url=$url")
|
docker_cli+=("--label" "io.hass.url=$url")
|
||||||
|
@ -253,7 +256,7 @@ function build_addon() {
|
||||||
|
|
||||||
# Start build
|
# Start build
|
||||||
run_build "$TARGET" "$repository" "$image" "$version" \
|
run_build "$TARGET" "$repository" "$image" "$version" \
|
||||||
"addon" "$build_from" "$build_arch" docker_cli[@]
|
"$build_from" "$build_arch" docker_cli[@]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -267,10 +270,11 @@ function build_supervisor() {
|
||||||
|
|
||||||
# Read version
|
# Read version
|
||||||
version="$(python3 "$TARGET/setup.py" -V)"
|
version="$(python3 "$TARGET/setup.py" -V)"
|
||||||
|
docker_cli+=("--label" "io.hass.type=supervisor")
|
||||||
|
|
||||||
# Start build
|
# Start build
|
||||||
run_build "$TARGET" "$DOCKER_HUB" "$image" "$version" \
|
run_build "$TARGET" "$DOCKER_HUB" "$image" "$version" \
|
||||||
"supervisor" "$build_from" "$build_arch" docker_cli[@]
|
"$build_from" "$build_arch" docker_cli[@]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -281,12 +285,34 @@ function build_homeassistant() {
|
||||||
local build_from="homeassistant/${build_arch}-homeassistant-base:latest"
|
local build_from="homeassistant/${build_arch}-homeassistant-base:latest"
|
||||||
local docker_cli=()
|
local docker_cli=()
|
||||||
|
|
||||||
|
# Set labels
|
||||||
|
docker_cli+=("--label" "io.hass.type=homeassistant")
|
||||||
|
|
||||||
# Start build
|
# Start build
|
||||||
run_build "$TARGET" "$DOCKER_HUB" "$image" "$VERSION" \
|
run_build "$TARGET" "$DOCKER_HUB" "$image" "$VERSION" \
|
||||||
"homeassistant" "$build_from" "$build_arch" docker_cli[@]
|
"$build_from" "$build_arch" docker_cli[@]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function build_homeassistant_machine() {
|
||||||
|
local build_machine=$1
|
||||||
|
|
||||||
|
local image="${build_machine}-homeassistant"
|
||||||
|
local build_from=""
|
||||||
|
local docker_cli=()
|
||||||
|
local dockerfile="$TARGET/$build_machine"
|
||||||
|
|
||||||
|
# Set labels
|
||||||
|
docker_cli+=("--label" "io.hass.machine=$build_machine")
|
||||||
|
docker_cli+=("--file" "$dockerfile")
|
||||||
|
|
||||||
|
# Start build
|
||||||
|
run_build "$TARGET" "$DOCKER_HUB" "$image" "$VERSION" \
|
||||||
|
"$build_from" "" docker_cli[@]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function extract_machine_build() {
|
function extract_machine_build() {
|
||||||
local list=$1
|
local list=$1
|
||||||
|
|
||||||
|
@ -419,7 +445,7 @@ while [[ $# -gt 0 ]]; do
|
||||||
done
|
done
|
||||||
|
|
||||||
# Check if a architecture is available
|
# Check if a architecture is available
|
||||||
if [ "${#BUILD_LIST[@]}" -eq 0 ] && [ "$BUILT_TYPE" != "homeassistant-machine" ]; then
|
if [ "${#BUILD_LIST[@]}" -eq 0 ] && [ "$BUILD_TYPE" != "homeassistant-machine" ]; then
|
||||||
echo "[ERROR] You need select a architecture for build!"
|
echo "[ERROR] You need select a architecture for build!"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
@ -430,16 +456,6 @@ if [ "$BUILD_TYPE" != "addon" ] && [ -z "$DOCKER_HUB" ]; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$BUILD_TYPE" == "homeassistant" ] && [ -z "$VERSION" ]; then
|
|
||||||
echo "[ERROR] Please set a version for home-assistant!"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$BUILD_TYPE" == "homeassistant-machine" ] && [ -z "$VERSION" ]; then
|
|
||||||
echo "[ERROR] Please set a version for home-assistant!"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
#### Main ####
|
#### Main ####
|
||||||
|
|
||||||
|
@ -456,7 +472,7 @@ if [ ! -z "$GIT_REPOSITORY" ]; then
|
||||||
TARGET="/data/git/$TARGET"
|
TARGET="/data/git/$TARGET"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Select addon build
|
# Select arch build
|
||||||
echo "[INFO] Run $BUILD_TYPE build for: ${BUILD_LIST[*]}"
|
echo "[INFO] Run $BUILD_TYPE build for: ${BUILD_LIST[*]}"
|
||||||
for arch in "${BUILD_LIST[@]}"; do
|
for arch in "${BUILD_LIST[@]}"; do
|
||||||
if [ "$BUILD_TYPE" == "addon" ]; then
|
if [ "$BUILD_TYPE" == "addon" ]; then
|
||||||
|
@ -469,6 +485,15 @@ for arch in "${BUILD_LIST[@]}"; do
|
||||||
BUILD_TASKS+=($!)
|
BUILD_TASKS+=($!)
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# Select machine build
|
||||||
|
if [ "$BUILD_TYPE" == "homeassistant-machine" ]; then
|
||||||
|
echo "[INFO] Machine builds: ${BUILD_MACHINE[*]}"
|
||||||
|
for machine in "${BUILD_MACHINE[@]}"; do
|
||||||
|
(build_homeassistant_machine "$machine") &
|
||||||
|
BUILD_TASKS+=($!)
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
# Wait until all build jobs are done
|
# Wait until all build jobs are done
|
||||||
wait "${BUILD_TASKS[@]}"
|
wait "${BUILD_TASKS[@]}"
|
||||||
|
|
||||||
|
|
|
@ -1,13 +0,0 @@
|
||||||
FROM %%BASE_IMAGE%%
|
|
||||||
|
|
||||||
# add env
|
|
||||||
ENV LANG C.UTF-8
|
|
||||||
|
|
||||||
# setup base
|
|
||||||
RUN apk add --no-cache socat
|
|
||||||
|
|
||||||
# install scripts
|
|
||||||
COPY run.sh /
|
|
||||||
RUN chmod a+x /run.sh
|
|
||||||
|
|
||||||
CMD [ "/run.sh" ]
|
|
|
@ -1,11 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
set -e
|
|
||||||
|
|
||||||
# check env
|
|
||||||
if [ -z "$HASSIO" ]; then
|
|
||||||
echo "[ERROR] Need set \$HASSIO env!"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "[INFO] Start cluster proxy"
|
|
||||||
exec socat TCP-LISTEN:9123,fork TCP:$HASSIO:9123 < /dev/null
|
|
Loading…
Add table
Add a link
Reference in a new issue