Improved Hass.io build system

Comments
This is going to be a technical post for Hass.io add-on developers and people that run locally build add-ons (not the default).

Two months ago we introduced Hass.io, allowing our users to easily install, update and manage their Home Assistant installation. In this short time we’ve seen great adoption from the community. Around 20% of our users are choosing Hass.io as their method of running Home Assistant today. We’ve also seen many add-ons being made available on the forums. There are currently 14 reposities full of add-ons being shared!

Hass.io is built on top of Docker, a container runtime. One thing that Docker did not support was dynamic build environements. That was annoying for Hass.io because by supporting multiple CPU architectures, that was exactly what we needed! Luckily this feature has been added in Docker 17.05. By moving to Docker 17.05 as the minimum supported version we will be able to replace our templated Dockerfile approach with standard Dockerfiles that work out of the box. Thanks to Frenck for notifying us of this new build feature.

This change only impacts people that build add-ons or use add-ons that are built locally. You can check if your add-on is building locally on the detail page of add-ons.

If you are an add-on developer, read the documentation on how to publish your add-ons to Docker Hub. This will greatly improve the user experience.

Template changes

As an add-on developer, you will only have to change one line in your template to make it compatible with the new system. If you wish, you can also change the default build options for your image using the new build.json file.

Old:

FROM %%BASE_IMAGE%%

New:

ARG BUILD_FROM
FROM $BUILD_FROM

When

The new system will become active with Hass.io 0.64 and Host OS 1.1. Host OS 1.1 is available today. Navigate to Advanced Settings in the Hass.io panel to start the OTA update.

We have also updated our build scripts and replaced it with a builder docker engine. This builder makes deploying Hass.io components very easy. All basic functionality is supported. If you want more functionality, check out the builder by the Community Hass.io Add-ons project.