add example addon
This commit is contained in:
parent
9d72f4397b
commit
525bcce5cb
15
example/CHANGELOG.md
Normal file
15
example/CHANGELOG.md
Normal file
|
@ -0,0 +1,15 @@
|
|||
<!-- https://developers.home-assistant.io/docs/add-ons/presentation#keeping-a-changelog -->
|
||||
|
||||
## 1.2.0
|
||||
|
||||
- Add an apparmor profile
|
||||
- Update to 3.15 base image with s6 v3
|
||||
- Add a sample script to run as service and constrain in aa profile
|
||||
|
||||
## 1.1.0
|
||||
|
||||
- Updates
|
||||
|
||||
## 1.0.0
|
||||
|
||||
- Initial release
|
10
example/DOCS.md
Normal file
10
example/DOCS.md
Normal file
|
@ -0,0 +1,10 @@
|
|||
# Home Assistant Add-on: Example add-on
|
||||
|
||||
## How to use
|
||||
|
||||
This add-on really does nothing. It is just an example.
|
||||
|
||||
When started it will print the configured message or "Hello world" in the log.
|
||||
|
||||
It will also print "All done!" in `/share/example_addon_output.txt` to show
|
||||
simple example of the usage of `map` in addon config.
|
12
example/Dockerfile
Normal file
12
example/Dockerfile
Normal file
|
@ -0,0 +1,12 @@
|
|||
# https://developers.home-assistant.io/docs/add-ons/configuration#add-on-dockerfile
|
||||
ARG BUILD_FROM
|
||||
FROM $BUILD_FROM
|
||||
|
||||
# Execute during the build of the image
|
||||
ARG TEMPIO_VERSION BUILD_ARCH
|
||||
RUN \
|
||||
curl -sSLf -o /usr/bin/tempio \
|
||||
"https://github.com/home-assistant/tempio/releases/download/${TEMPIO_VERSION}/tempio_${BUILD_ARCH}"
|
||||
|
||||
# Copy root filesystem
|
||||
COPY rootfs /
|
15
example/README.md
Normal file
15
example/README.md
Normal file
|
@ -0,0 +1,15 @@
|
|||
# Home Assistant Add-on: Example add-on
|
||||
|
||||
_Example add-on to use as a blueprint for new add-ons._
|
||||
|
||||
![Supports aarch64 Architecture][aarch64-shield]
|
||||
![Supports amd64 Architecture][amd64-shield]
|
||||
![Supports armhf Architecture][armhf-shield]
|
||||
![Supports armv7 Architecture][armv7-shield]
|
||||
![Supports i386 Architecture][i386-shield]
|
||||
|
||||
[aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
|
||||
[amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
|
||||
[armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg
|
||||
[armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg
|
||||
[i386-shield]: https://img.shields.io/badge/i386-yes-green.svg
|
57
example/apparmor.txt
Normal file
57
example/apparmor.txt
Normal file
|
@ -0,0 +1,57 @@
|
|||
#include <tunables/global>
|
||||
|
||||
profile example flags=(attach_disconnected,mediate_deleted) {
|
||||
#include <abstractions/base>
|
||||
|
||||
# Capabilities
|
||||
file,
|
||||
signal (send) set=(kill,term,int,hup,cont),
|
||||
|
||||
# S6-Overlay
|
||||
/init ix,
|
||||
/bin/** ix,
|
||||
/usr/bin/** ix,
|
||||
/run/{s6,s6-rc*,service}/** ix,
|
||||
/package/** ix,
|
||||
/command/** ix,
|
||||
/etc/services.d/** rwix,
|
||||
/etc/cont-init.d/** rwix,
|
||||
/etc/cont-finish.d/** rwix,
|
||||
/run/{,**} rwk,
|
||||
/dev/tty rw,
|
||||
|
||||
# Bashio
|
||||
/usr/lib/bashio/** ix,
|
||||
/tmp/** rwk,
|
||||
|
||||
# Access to options.json and other files within your addon
|
||||
/data/** rw,
|
||||
|
||||
# Start new profile for service
|
||||
/usr/bin/my_program cx -> my_program,
|
||||
|
||||
profile my_program flags=(attach_disconnected,mediate_deleted) {
|
||||
#include <abstractions/base>
|
||||
|
||||
# Receive signals from S6-Overlay
|
||||
signal (receive) peer=*_example,
|
||||
|
||||
# Access to options.json and other files within your addon
|
||||
/data/** rw,
|
||||
|
||||
# Access to mapped volumes specified in config.json
|
||||
/share/** rw,
|
||||
|
||||
# Access required for service functionality
|
||||
# Note: List was built by doing the following:
|
||||
# 1. Add what is obviously needed based on what is in the script
|
||||
# 2. Add `complain` as a flag to this profile temporarily and run the addon
|
||||
# 3. Review the audit log with `journalctl _TRANSPORT="audit" -g 'apparmor="ALLOWED"'` and add other access as needed
|
||||
# Remember to remove the `complain` flag when you are done
|
||||
/usr/bin/my_program r,
|
||||
/bin/bash rix,
|
||||
/bin/echo ix,
|
||||
/etc/passwd r,
|
||||
/dev/tty rw,
|
||||
}
|
||||
}
|
14
example/build.yaml
Normal file
14
example/build.yaml
Normal file
|
@ -0,0 +1,14 @@
|
|||
# https://developers.home-assistant.io/docs/add-ons/configuration#add-on-dockerfile
|
||||
build_from:
|
||||
aarch64: "ghcr.io/home-assistant/aarch64-base:3.15"
|
||||
amd64: "ghcr.io/home-assistant/amd64-base:3.15"
|
||||
armhf: "ghcr.io/home-assistant/armhf-base:3.15"
|
||||
armv7: "ghcr.io/home-assistant/armv7-base:3.15"
|
||||
i386: "ghcr.io/home-assistant/i386-base:3.15"
|
||||
labels:
|
||||
org.opencontainers.image.title: "Home Assistant Add-on: Example add-on"
|
||||
org.opencontainers.image.description: "Example add-on to use as a blueprint for new add-ons."
|
||||
org.opencontainers.image.source: "https://github.com/home-assistant/addons-example"
|
||||
org.opencontainers.image.licenses: "Apache License 2.0"
|
||||
args:
|
||||
TEMPIO_VERSION: "2021.09.0"
|
20
example/config.yaml
Normal file
20
example/config.yaml
Normal file
|
@ -0,0 +1,20 @@
|
|||
# https://developers.home-assistant.io/docs/add-ons/configuration#add-on-config
|
||||
name: Example add-on
|
||||
version: "1.2.0"
|
||||
slug: example
|
||||
description: Example add-on
|
||||
url: "https://github.com/home-assistant/addons-example/tree/main/example"
|
||||
arch:
|
||||
- armhf
|
||||
- armv7
|
||||
- aarch64
|
||||
- amd64
|
||||
- i386
|
||||
init: false
|
||||
map:
|
||||
- share:rw
|
||||
options:
|
||||
message: "Hello world..."
|
||||
schema:
|
||||
message: "str?"
|
||||
image: "ghcr.io/home-assistant/{arch}-addon-example"
|
BIN
example/icon.png
Normal file
BIN
example/icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 47 KiB |
BIN
example/logo.png
Normal file
BIN
example/logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 130 KiB |
15
example/rootfs/etc/services.d/example/finish
Executable file
15
example/rootfs/etc/services.d/example/finish
Executable file
|
@ -0,0 +1,15 @@
|
|||
#!/usr/bin/env bashio
|
||||
# ==============================================================================
|
||||
# Take down the S6 supervision tree when example fails
|
||||
# s6-overlay docs: https://github.com/just-containers/s6-overlay
|
||||
# ==============================================================================
|
||||
|
||||
declare APP_EXIT_CODE=${1}
|
||||
|
||||
if [[ "${APP_EXIT_CODE}" -ne 0 ]] && [[ "${APP_EXIT_CODE}" -ne 256 ]]; then
|
||||
bashio::log.warning "Halt add-on with exit code ${APP_EXIT_CODE}"
|
||||
echo "${APP_EXIT_CODE}" > /run/s6-linux-init-container-results/exitcode
|
||||
exec /run/s6/basedir/bin/halt
|
||||
fi
|
||||
|
||||
bashio::log.info "Service restart after closing"
|
19
example/rootfs/etc/services.d/example/run
Executable file
19
example/rootfs/etc/services.d/example/run
Executable file
|
@ -0,0 +1,19 @@
|
|||
#!/usr/bin/with-contenv bashio
|
||||
# ==============================================================================
|
||||
# Start the example service
|
||||
# s6-overlay docs: https://github.com/just-containers/s6-overlay
|
||||
# ==============================================================================
|
||||
|
||||
# Add your code here
|
||||
|
||||
# Declare variables
|
||||
declare message
|
||||
|
||||
## Get the 'message' key from the user config options.
|
||||
message=$(bashio::config 'message')
|
||||
|
||||
## Print the message the user supplied, defaults to "Hello World..."
|
||||
bashio::log.info "${message:="Hello World..."}"
|
||||
|
||||
## Run your program
|
||||
exec /usr/bin/my_program
|
3
example/rootfs/usr/bin/my_program
Executable file
3
example/rootfs/usr/bin/my_program
Executable file
|
@ -0,0 +1,3 @@
|
|||
#!/bin/bash
|
||||
|
||||
echo "All done!" > /share/example_addon_output.txt
|
4
example/translations/en.yaml
Normal file
4
example/translations/en.yaml
Normal file
|
@ -0,0 +1,4 @@
|
|||
configuration:
|
||||
message:
|
||||
name: Message
|
||||
description: The message that will be printed to the log when starting this example add-on.
|
Loading…
Reference in a new issue