Add frontend build env (#9)

This commit is contained in:
Pascal Vizeli 2017-05-14 00:06:53 +02:00 committed by GitHub
parent 7f5510391f
commit 05783ea334
4 changed files with 197 additions and 0 deletions

View file

@ -0,0 +1,24 @@
FROM ubuntu:16.04
# setup locals
RUN apt-get update && apt-get install -y \
locales \
curl \
apt-transport-https \
&& rm -rf /var/lib/apt/lists/* \
&& ln -s /usr/bin/nodejs /usr/bin/node
RUN locale-gen en_US.UTF-8
ENV LANG en_US.UTF-8
# install yaml
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
&& echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
&& apt-get update && apt-get install -y \
nodejs \
npm \
yarn \
&& rm -rf /var/lib/apt/lists/*
COPY run-build.sh /
WORKDIR /hassio

View file

@ -0,0 +1,93 @@
#!/bin/bash
set -e
BUILD_CONTAINER_NAME=hassio-frontend-$$
BRANCH=dev
REPOSITORY=https://github.com/home-assistant/hassio
cleanup() {
echo "[INFO] Cleanup."
# Stop docker container
echo "[INFO] Cleaning up hassio-frontend 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
# 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 frontend build
create_frontend [options]
Options:
-h, --help
Display this help and exit.
-r, --repository
Repository to fetch hassio
-b, --branch
Branch to checkout
EOF
}
# Parse arguments
while [[ $# -gt 0 ]]; do
key=$1
case $key in
-h|--help)
help
exit 0
;;
-r|--repository)
REPOSITORY=$2
shift
;;
-b|--branch)
BRANCH=$1
shift
;;
*)
echo "[WARNING] $0 : Argument '$1' unknown. Ignoring."
;;
esac
shift
done
# Get the absolute script location
pushd "$(dirname "$0")" > /dev/null 2>&1
SCRIPTPATH=$(pwd)
popd > /dev/null 2>&1
BUILD_DIR=${BUILD_DIR:=$SCRIPTPATH}
WORKSPACE=${BUILD_DIR:=$SCRIPTPATH}/hassio-frontend
echo "[INFO] Checkout hass.io repository"
git clone "$REPOSITORY" "$WORKSPACE"
cd "$WORKSPACE" && git checkout "$BRANCH"
git submodule update --init --recursive
echo "[INFO] Start frontend 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":/hassio \
--name $BUILD_CONTAINER_NAME \
homeassistant/frontend-build-env \
/run-build.sh
echo "[INFO] cleanup WORKSPACE"
rm -rf "$WORKSPACE"
cleanup "okay"
exit 0

View file

@ -0,0 +1,65 @@
#!/bin/bash
set -e
DOCKER_IMAGE=${DOCKER_IMAGE:="homeassistant/frontend-build-env"}
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 frontend build environment
create_frontend_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
# 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

View file

@ -0,0 +1,15 @@
#!/bin/bash
set -e
# build frontend
yarn
./node_modules/.bin/bower install --allow-root
yarn run frontend_prod
# prepare data
cd build-temp/
gzip -f -k -9 ./*.html
# move to frontend
cp -f hassio-main.html ../hassio/panel/
cp -f hassio-main.html.gz ../hassio/panel/