1
0

Compare commits

...

79 Commits

15 changed files with 143 additions and 176 deletions

View File

@@ -10,6 +10,7 @@ on:
jobs: jobs:
create-release: create-release:
runs-on: ubuntu-latest runs-on: ubuntu-latest
continue-on-error: true
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- uses: actions/setup-python@v2 - uses: actions/setup-python@v2
@@ -23,17 +24,18 @@ jobs:
git config user.name esphomebot git config user.name esphomebot
git config user.email esphome@nabucasa.com git config user.email esphome@nabucasa.com
git add . git add .
git commit -m "Bump version to v${{ github.event.inputs.version }}" git commit -m "Bump version to ${{ github.event.inputs.version }}"
git push git push
COMMIT=$(git rev-parse HEAD) COMMIT=$(git rev-parse HEAD)
echo "::set-output name=commit_sha::${COMMIT}" echo "::set-output name=commit_sha::${COMMIT}"
- if: ${{ contains(github.event.inputs.version, 'b') }} - if: ${{ contains(github.event.inputs.version, 'b') }}
name: Create Beta Release name: Create Beta Release
uses: actions/create-release@v1 uses: actions/create-release@v1
continue-on-error: true
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with: with:
tag_name: v${{ github.event.inputs.version }} tag_name: ${{ github.event.inputs.version }}
release_name: ${{ github.event.inputs.version }} release_name: ${{ github.event.inputs.version }}
body: 'See https://beta.esphome.io/changelog/index.html' body: 'See https://beta.esphome.io/changelog/index.html'
prerelease: true prerelease: true
@@ -41,33 +43,12 @@ jobs:
- if: ${{ !contains(github.event.inputs.version, 'b') }} - if: ${{ !contains(github.event.inputs.version, 'b') }}
name: Create Stable Release name: Create Stable Release
uses: actions/create-release@v1 uses: actions/create-release@v1
continue-on-error: true
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with: with:
tag_name: v${{ github.event.inputs.version }} tag_name: ${{ github.event.inputs.version }}
release_name: ${{ github.event.inputs.version }} release_name: ${{ github.event.inputs.version }}
body: 'See https://esphome.io/changelog/index.html' body: 'See https://esphome.io/changelog/index.html'
prerelease: false prerelease: false
commitish: ${{ steps.commit_version.outputs.commit_sha }} commitish: ${{ steps.commit_version.outputs.commit_sha }}
deploy-community-addons:
runs-on: ubuntu-latest
needs: [create-release]
steps:
- name: Publish beta release to community-addons repository
run: |
docker run --rm hassioaddons/repository-updater:latest \
--repository hassio-addons/repository-beta \
--addon esphome \
--token "${TOKEN}"
env:
TOKEN: ${{ secrets.COMMUNITY_ADDONS_TOKEN }}
- if: ${{ !contains(github.event.inputs.version, 'b') }}
name: Publish stable release to community-addons repository
run: |
docker run --rm hassioaddons/repository-updater:latest \
--repository hassio-addons/repository \
--addon esphome \
--token "${TOKEN}"
env:
TOKEN: ${{ secrets.COMMUNITY_ADDONS_TOKEN }}

1
.gitignore vendored
View File

@@ -1,3 +1,4 @@
__pycache__/ __pycache__/
*.py[cod] *.py[cod]
*$py.class *$py.class
venv/

View File

@@ -1,43 +0,0 @@
{
"arch": [
"amd64",
"armv7",
"aarch64"
],
"auth_api": true,
"backup_exclude": [
"*/*/"
],
"description": "Beta version of ESPHome add-on",
"hassio_api": true,
"host_network": true,
"image": "ghcr.io/esphome/esphome-hassio-{arch}",
"ingress": true,
"ingress_port": 0,
"map": [
"ssl:ro",
"config:rw"
],
"name": "ESPHome (beta)",
"panel_icon": "mdi:chip",
"ports": {
"6052/tcp": null
},
"ports_description": {
"6052/tcp": "Web interface (not required for Home Assistant ingress)"
},
"schema": {
"certfile": "str?",
"keyfile": "str?",
"leave_front_door_open": "bool?",
"relative_url": "str?",
"ssl": "bool?",
"status_use_ping": "bool?",
"streamer_mode": "bool?"
},
"slug": "esphome-beta",
"stage": "experimental",
"uart": true,
"url": "https://beta.esphome.io/",
"version": "2021.9.2"
}

37
esphome-beta/config.yaml Normal file
View File

@@ -0,0 +1,37 @@
---
advanced: true
arch:
- amd64
- armv7
- aarch64
auth_api: true
backup_exclude:
- '*/*/'
description: Beta version of ESPHome add-on
hassio_api: true
host_network: true
image: ghcr.io/esphome/esphome-hassio-{arch}
ingress: true
ingress_port: 0
map:
- ssl:ro
- config:rw
name: ESPHome (beta)
panel_icon: mdi:chip
ports:
6052/tcp: null
ports_description:
6052/tcp: Web interface (not required for Home Assistant ingress)
schema:
certfile: str?
keyfile: str?
leave_front_door_open: bool?
relative_url: str?
ssl: bool?
status_use_ping: bool?
streamer_mode: bool?
slug: esphome-beta
stage: experimental
uart: true
url: https://beta.esphome.io/
version: 2022.3.2

View File

@@ -1,7 +0,0 @@
{
"build_from": {
"aarch64": "ghcr.io/esphome/esphome-hassio-aarch64:dev",
"amd64": "ghcr.io/esphome/esphome-hassio-amd64:dev",
"armv7": "ghcr.io/esphome/esphome-hassio-armv7:dev"
}
}

5
esphome-dev/build.yaml Normal file
View File

@@ -0,0 +1,5 @@
---
build_from:
aarch64: ghcr.io/esphome/esphome-hassio-aarch64:dev
amd64: ghcr.io/esphome/esphome-hassio-amd64:dev
armv7: ghcr.io/esphome/esphome-hassio-armv7:dev

View File

@@ -1,43 +0,0 @@
{
"arch": [
"amd64",
"armv7",
"aarch64"
],
"auth_api": true,
"backup_exclude": [
"*/*/"
],
"description": "Development version of ESPHome add-on",
"hassio_api": true,
"host_network": true,
"ingress": true,
"ingress_port": 0,
"map": [
"ssl:ro",
"config:rw"
],
"name": "ESPHome (dev)",
"panel_icon": "mdi:chip",
"ports": {
"6052/tcp": null
},
"ports_description": {
"6052/tcp": "Web interface (not required for Home Assistant ingress)"
},
"schema": {
"certfile": "str?",
"esphome_fork": "str?",
"keyfile": "str?",
"leave_front_door_open": "bool?",
"relative_url": "str?",
"ssl": "bool?",
"status_use_ping": "bool?",
"streamer_mode": "bool?"
},
"slug": "esphome-dev",
"stage": "experimental",
"uart": true,
"url": "https://next.esphome.io/",
"version": "dev"
}

37
esphome-dev/config.yaml Normal file
View File

@@ -0,0 +1,37 @@
---
advanced: true
arch:
- amd64
- armv7
- aarch64
auth_api: true
backup_exclude:
- '*/*/'
description: Development version of ESPHome add-on
hassio_api: true
host_network: true
ingress: true
ingress_port: 0
map:
- ssl:ro
- config:rw
name: ESPHome (dev)
panel_icon: mdi:chip
ports:
6052/tcp: null
ports_description:
6052/tcp: Web interface (not required for Home Assistant ingress)
schema:
certfile: str?
esphome_fork: str?
keyfile: str?
leave_front_door_open: bool?
relative_url: str?
ssl: bool?
status_use_ping: bool?
streamer_mode: bool?
slug: esphome-dev
stage: experimental
uart: true
url: https://next.esphome.io/
version: dev

View File

@@ -18,12 +18,18 @@ if bashio::config.has_value 'esphome_fork'; then
username="esphome" username="esphome"
ref=$esphome_fork ref=$esphome_fork
fi fi
full_url="https://github.com/${username}/esphome/archive/${ref}.zip" full_url="https://github.com/${username}/esphome/archive/${ref}.tar.gz"
bashio::log.info "Checking forked ESPHome" bashio::log.info "Checking forked ESPHome"
dev_version=$(python3 -c "from esphome.const import __version__; print(__version__)") dev_version=$(python3 -c "from esphome.const import __version__; print(__version__)")
bashio::log.info "Installing esphome from fork '${esphome_fork}' (${full_url})..." bashio::log.info "Downloading ESPHome from fork '${esphome_fork}' (${full_url})..."
pip3 install -U --no-cache-dir "${full_url}" -qq \ curl -L -o /tmp/esphome.tar.gz "${full_url}" -qq \
|| bashio::exit.nok "Failed installing esphome pinned version." || bashio::exit.nok "Failed downloading ESPHome fork."
bashio::log.info "Installing ESPHome from fork '${esphome_fork}' (${full_url})..."
mkdir /esphome-fork
tar -zxf /tmp/esphome.tar.gz -C /esphome-fork --strip-components=1 \
|| bashio::exit.nok "Failed installing ESPHome from fork."
pip install -U -e /esphome-fork || bashio::exit.nok "Failed installing ESPHome from fork."
rm -f /tmp/esphome.tar.gz
fork_version=$(python3 -c "from esphome.const import __version__; print(__version__)") fork_version=$(python3 -c "from esphome.const import __version__; print(__version__)")
if [[ "$fork_version" != "$dev_version" ]]; then if [[ "$fork_version" != "$dev_version" ]]; then
@@ -36,4 +42,5 @@ if bashio::config.has_value 'esphome_fork'; then
bashio::log.error "############################" bashio::log.error "############################"
bashio::exit.nok bashio::exit.nok
fi fi
bashio::log.info "Installed ESPHome from fork '${esphome_fork}' (${full_url})..."
fi fi

View File

@@ -1,42 +0,0 @@
{
"arch": [
"amd64",
"armv7",
"aarch64"
],
"auth_api": true,
"backup_exclude": [
"*/*/"
],
"description": "ESPHome add-on for intelligently managing all your ESP8266/ESP32 devices",
"hassio_api": true,
"host_network": true,
"image": "ghcr.io/esphome/esphome-hassio-{arch}",
"ingress": true,
"ingress_port": 0,
"map": [
"ssl:ro",
"config:rw"
],
"name": "ESPHome",
"panel_icon": "mdi:chip",
"ports": {
"6052/tcp": null
},
"ports_description": {
"6052/tcp": "Web interface (not required for Home Assistant ingress)"
},
"schema": {
"certfile": "str?",
"keyfile": "str?",
"leave_front_door_open": "bool?",
"relative_url": "str?",
"ssl": "bool?",
"status_use_ping": "bool?",
"streamer_mode": "bool?"
},
"slug": "esphome",
"uart": true,
"url": "https://esphome.io/",
"version": "2021.9.2"
}

35
esphome/config.yaml Normal file
View File

@@ -0,0 +1,35 @@
---
arch:
- amd64
- armv7
- aarch64
auth_api: true
backup_exclude:
- '*/*/'
description: ESPHome add-on for intelligently managing all your ESP8266/ESP32 devices
hassio_api: true
host_network: true
image: ghcr.io/esphome/esphome-hassio-{arch}
ingress: true
ingress_port: 0
map:
- ssl:ro
- config:rw
name: ESPHome
panel_icon: mdi:chip
ports:
6052/tcp: null
ports_description:
6052/tcp: Web interface (not required for Home Assistant ingress)
schema:
certfile: str?
keyfile: str?
leave_front_door_open: bool?
relative_url: str?
ssl: bool?
status_use_ping: bool?
streamer_mode: bool?
slug: esphome
uart: true
url: https://esphome.io/
version: 2022.3.2

View File

@@ -1,5 +1,5 @@
{ {
"name": "ESPHome Home Assistant Add-Ons", "name": "ESPHome",
"url": "https://github.com/esphome/hassio", "url": "https://esphome.io",
"maintainer": "ESPHome <esphome@nabucasa.com>" "maintainer": "ESPHome <esphome@nabucasa.com>"
} }

View File

@@ -4,7 +4,6 @@ import argparse
import yaml import yaml
from pathlib import Path from pathlib import Path
from enum import Enum from enum import Enum
import json
from shutil import copyfile from shutil import copyfile
import sys import sys
@@ -34,9 +33,9 @@ def main(args):
conf = config[f"esphome-{channel.value}"] conf = config[f"esphome-{channel.value}"]
base_image = conf.pop("base_image", None) base_image = conf.pop("base_image", None)
dir_ = root / conf.pop("directory") dir_ = root / conf.pop("directory")
path = dir_ / "config.json" path = dir_ / "config.yaml"
with open(path, "w") as f: with open(path, "w") as f:
json.dump(conf, f, indent=2, sort_keys=True) yaml.dump(conf, f, indent=2, sort_keys=True, explicit_start=True)
for file_, conf_ in copyf.items(): for file_, conf_ in copyf.items():
if Path.exists(templ / channel.value / file_): if Path.exists(templ / channel.value / file_):
@@ -49,16 +48,14 @@ def main(args):
f.write("Any edits should be made to the files in the 'template' directory") f.write("Any edits should be made to the files in the 'template' directory")
if channel == Channel.dev: if channel == Channel.dev:
path = dir_ / "build.json" path = dir_ / "build.yaml"
build_conf = { build_conf = {
"build_from": { "build_from": {
arch: base_image.format(arch=arch) for arch in conf["arch"] arch: base_image.format(arch=arch) for arch in conf["arch"]
} }
} }
with open(path, "w") as f: with open(path, "w") as f:
json.dump(build_conf, f, indent=2, sort_keys=True) yaml.dump(build_conf, f, indent=2, sort_keys=True, explicit_start=True)
print(f"Wrote {path}")
if __name__ == "__main__": if __name__ == "__main__":

View File

@@ -1 +1 @@
PyYAML==5.4 PyYAML==6.0

View File

@@ -46,6 +46,7 @@ esphome-dev:
description: "Development version of ESPHome add-on" description: "Development version of ESPHome add-on"
url: https://next.esphome.io/ url: https://next.esphome.io/
stage: experimental stage: experimental
advanced: true
schema: schema:
ssl: bool? ssl: bool?
certfile: str? certfile: str?
@@ -61,18 +62,19 @@ esphome-beta:
<<: *base <<: *base
directory: esphome-beta directory: esphome-beta
name: ESPHome (beta) name: ESPHome (beta)
version: '2021.9.2' # BETA version: '2022.3.2' # BETA
slug: esphome-beta slug: esphome-beta
description: "Beta version of ESPHome add-on" description: "Beta version of ESPHome add-on"
url: https://beta.esphome.io/ url: https://beta.esphome.io/
image: ghcr.io/esphome/esphome-hassio-{arch} image: ghcr.io/esphome/esphome-hassio-{arch}
stage: experimental stage: experimental
advanced: true
esphome-stable: esphome-stable:
<<: *base <<: *base
directory: esphome directory: esphome
name: ESPHome name: ESPHome
version: '2021.9.2' # STABLE version: '2022.3.2' # STABLE
slug: esphome slug: esphome
description: "ESPHome add-on for intelligently managing all your ESP8266/ESP32 devices" description: "ESPHome add-on for intelligently managing all your ESP8266/ESP32 devices"
image: ghcr.io/esphome/esphome-hassio-{arch} image: ghcr.io/esphome/esphome-hassio-{arch}