Skip to content

home-assistant/builder

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Home Assistant builder

Multi-purpose cross-compile docker builder.

GitHub Action

You can use this repository as a GitHub action to test and/or publish your builds.

Use the with.args key to pass in arguments to the builder, to see what arguments are supported you can look at the arguments section.

Test action example

name: 'Test'

on: [push, pull_request]

jobs:
  build:
    name: Test build
    runs-on: ubuntu-latest
    steps:
    - name: Checkout the repository
      uses: actions/checkout@v2
    - name: Test build
      uses: home-assistant/builder@master
      with:
        args: |
          --test \
          --all \
          --target addon-folder \
          --docker-hub user-name-or-space-name

Publish action example

name: 'Publish'

on:
  release:
    types: [published]

jobs:
  publish:
    name: Publish
    runs-on: ubuntu-latest
    steps:
    - name: Checkout the repository
      uses: actions/checkout@v2
    - name: Login to DockerHub
      uses: docker/login-action@v1
      with:
        username: ${{ secrets.DOCKERHUB_USERNAME }}
        password: ${{ secrets.DOCKERHUB_TOKEN }}
    - name: Publish
      uses: home-assistant/builder@master
      with:
        args: |
          --all \
          --target addon-folder \
          --docker-hub user-name-or-space-name

Arguments

  Options:
    -h, --help
        Display this help and exit.
  
  Repository / Data
    -r, --repository <REPOSITORY>
        Set git repository to load data from.
    -b, --branch <BRANCH>
        Set git branch for repository.
    -t, --target <PATH_TO_BUILD>
        Set local folder or path inside repository for build.
  
  Version/Image handling
    -v, --version <VERSION>
        Overwrite version/tag of build.
    -i, --image <IMAGE_NAME>
        Overwrite image name of build / support {arch}.
    --release <VERSION>
        Additional version information like for base images.
    --release-tag
        Use this as main tag.
    --version-from <VERSION>
        Use this to set build_from tag if not specified.
  
  Architecture
    --armhf
        Build for arm v6.
    --armv7
        Build for arm v7.
    --amd64
        Build for intel/amd 64bit.
    --aarch64
        Build for arm 64bit.
    --i386
        Build for intel/amd 32bit.
    --all
        Build all architecture.
  
  Build handling
    --test
       Disable push to dockerhub.
    --no-latest
       Do not tag images as latest.
    --no-cache
       Disable cache for the build (from latest).
    --self-cache
       Use same tag as cache tag instead latest.
    --cache-tag <TAG>
       Use a custom tag for the build cache.
    -d, --docker-hub <DOCKER_REPOSITORY>
       Set or overwrite the docker repository.
    --docker-hub-check
       Check if the version already exists before starting the build.
    --docker-user <USER>
       Username to login into docker with
    --docker-password <PASSWORD>
       Password to login into docker with
    Use the host docker socket if mapped into container:
       /var/run/docker.sock
  
  Internals:
    --addon
        Default on. Run all things for an addon build.
    --generic <VERSION>
        Build based on the build.json
    --base <VERSION>
        Build our base images.
    --machine <VERSION=ALL,X,Y>
        Build the machine based image for a release/landingpage.
  
  Security:
    --with-codenotary <USER> <PASSWORD> <OWNER>
        Enable signing images with CodeNotary. Need set follow env:
    --validate-from <ORG|signer>
        Validate the FROM image which is used to build the image.
    --validate-cache <ORG|signer>
        Validate the cache image which is used to build the image.

Local installation

amd64:

docker pull homeassistant/amd64-builder

armv7/armhf:

docker pull homeassistant/armv7-builder

aarch64:

docker pull homeassistant/aarch64-builder

Run

For remote git repository:

docker run \
	--rm \
	--privileged \
	-v ~/.docker:/root/.docker \
	homeassistant/amd64-builder \
		--all \
		-t addon-folder \
		-r https://github.com/xy/addons \
		-b branchname

For local git repository:

docker run \
	--rm \
	--privileged \
	-v ~/.docker:/root/.docker \
	-v /my_addon:/data \
	homeassistant/amd64-builder \
		--all \
		-t /data

Docker Daemon

By default, the image will run docker-in-docker. You can use the host docker daemon by bind mounting the host docker socket to /var/run/docker.sock inside the container. For example, to do this with the Local repository example above (assuming the host docker socket is at /var/run/docker.sock:

docker run \
	--rm \
	--privileged \
	-v ~/.docker:/root/.docker \
	-v /var/run/docker.sock:/var/run/docker.sock:ro \
	-v /my_addon:/data \
	homeassistant/amd64-builder \
		--all \
		-t /data

Help

docker run --rm --privileged homeassistant/amd64-builder --help