update act runner addons
This commit is contained in:
parent
ee66b044c3
commit
f7f4e7393a
80
example/.README.j2
Normal file
80
example/.README.j2
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
# Home Assistant Community Add-on: Example
|
||||||
|
|
||||||
|
[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield]
|
||||||
|
|
||||||
|
[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum]
|
||||||
|
|
||||||
|
[![Sponsor Frenck via GitHub Sponsors][github-sponsors-shield]][github-sponsors]
|
||||||
|
|
||||||
|
[![Support Frenck on Patreon][patreon-shield]][patreon]
|
||||||
|
|
||||||
|
Example add-on by Community Home Assistant add-ons.
|
||||||
|
|
||||||
|
## About
|
||||||
|
|
||||||
|
This is an example add-on for Home Assistant. When started, it displays a
|
||||||
|
random quote every 5 seconds.
|
||||||
|
|
||||||
|
It shows off several features and structures like:
|
||||||
|
|
||||||
|
- Full blown GitHub repository.
|
||||||
|
- General Dockerfile structure and setup.
|
||||||
|
- The use of the `config.yaml` and `build.yaml` files.
|
||||||
|
- General shell scripting structure (`run.sh`).
|
||||||
|
- Quality assurance using CodeClimate.
|
||||||
|
- Continuous integration and deployment using GitLab.
|
||||||
|
- Usage of the Community Home Assistant Add-ons build environment.
|
||||||
|
- Small use of the Bash function library in our base images.
|
||||||
|
- The use of Docker label schema.
|
||||||
|
|
||||||
|
{% if channel == "edge" %}
|
||||||
|
## WARNING! THIS IS AN EDGE VERSION!
|
||||||
|
|
||||||
|
This Home Assistant Add-ons repository contains edge builds of add-ons.
|
||||||
|
Edge builds add-ons are based upon the latest development version.
|
||||||
|
|
||||||
|
- They may not work at all.
|
||||||
|
- They might stop working at any time.
|
||||||
|
- They could have a negative impact on your system.
|
||||||
|
|
||||||
|
This repository was created for:
|
||||||
|
|
||||||
|
- Anybody willing to test.
|
||||||
|
- Anybody interested in trying out upcoming add-ons or add-on features.
|
||||||
|
- Developers.
|
||||||
|
|
||||||
|
If you are more interested in stable releases of our add-ons:
|
||||||
|
|
||||||
|
<https://github.com/hassio-addons/repository>
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
{% if channel == "beta" %}
|
||||||
|
## WARNING! THIS IS A BETA VERSION!
|
||||||
|
|
||||||
|
This Home Assistant Add-ons repository contains beta releases of add-ons.
|
||||||
|
|
||||||
|
- They might stop working at any time.
|
||||||
|
- They could have a negative impact on your system.
|
||||||
|
|
||||||
|
This repository was created for:
|
||||||
|
|
||||||
|
- Anybody willing to test.
|
||||||
|
- Anybody interested in trying out upcoming add-ons or add-on features.
|
||||||
|
|
||||||
|
If you are more interested in stable releases of our add-ons:
|
||||||
|
|
||||||
|
<https://github.com/hassio-addons/repository>
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
[discord-shield]: https://img.shields.io/discord/478094546522079232.svg
|
||||||
|
[discord]: https://discord.me/hassioaddons
|
||||||
|
[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg
|
||||||
|
[forum]: https://community.home-assistant.io?u=frenck
|
||||||
|
[github-sponsors-shield]: https://frenck.dev/wp-content/uploads/2019/12/github_sponsor.png
|
||||||
|
[github-sponsors]: https://github.com/sponsors/frenck
|
||||||
|
[maintenance-shield]: https://img.shields.io/maintenance/yes/2024.svg
|
||||||
|
[patreon-shield]: https://frenck.dev/wp-content/uploads/2019/12/patreon.png
|
||||||
|
[patreon]: https://www.patreon.com/frenck
|
||||||
|
[project-stage-shield]: https://img.shields.io/badge/project%20stage-production%20ready-brightgreen.svg
|
||||||
|
[release-shield]: https://img.shields.io/badge/version-{{ version }}-blue.svg
|
||||||
|
[release]: {{ repo }}/tree/{{ version }}
|
139
example/DOCS.md
Normal file
139
example/DOCS.md
Normal file
@ -0,0 +1,139 @@
|
|||||||
|
# Home Assistant Community Add-on: Example
|
||||||
|
|
||||||
|
This is an example add-on for Home Assistant. When started, it displays a
|
||||||
|
random quote every 5 seconds.
|
||||||
|
|
||||||
|
It shows off several features and structures like:
|
||||||
|
|
||||||
|
- Full blown GitHub repository.
|
||||||
|
- General Dockerfile structure and setup.
|
||||||
|
- The use of the `config.yaml` and `build.yaml` files.
|
||||||
|
- General shell scripting structure (`run.sh`).
|
||||||
|
- Quality assurance using CodeClimate.
|
||||||
|
- Continuous integration and deployment using GitLab.
|
||||||
|
- Usage of the Community Home Assistant Add-ons build environment.
|
||||||
|
- Small use of the Bash function library in our base images.
|
||||||
|
- The use of Docker label schema.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
The installation of this add-on is pretty straightforward and not different in
|
||||||
|
comparison to installing any other Home Assistant add-on.
|
||||||
|
|
||||||
|
1. Click the Home Assistant My button below to open the add-on on your Home
|
||||||
|
Assistant instance.
|
||||||
|
|
||||||
|
[![Open this add-on in your Home Assistant instance.][addon-badge]][addon]
|
||||||
|
|
||||||
|
1. Click the "Install" button to install the add-on.
|
||||||
|
1. Start the "Example" add-on.
|
||||||
|
1. Check the logs of the "Example" add-on to see it in action.
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
Eventought this add-on is just an example add-on, it does come with some
|
||||||
|
configuration options to play around with.
|
||||||
|
|
||||||
|
**Note**: _Remember to restart the add-on when the configuration is changed._
|
||||||
|
|
||||||
|
Example add-on configuration:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
log_level: info
|
||||||
|
seconds_between_quotes: 5
|
||||||
|
```
|
||||||
|
|
||||||
|
### Option: `log_level`
|
||||||
|
|
||||||
|
The `log_level` option controls the level of log output by the add-on and can
|
||||||
|
be changed to be more or less verbose, which might be useful when you are
|
||||||
|
dealing with an unknown issue. Possible values are:
|
||||||
|
|
||||||
|
- `trace`: Show every detail, like all called internal functions.
|
||||||
|
- `debug`: Shows detailed debug information.
|
||||||
|
- `info`: Normal (usually) interesting events.
|
||||||
|
- `warning`: Exceptional occurrences that are not errors.
|
||||||
|
- `error`: Runtime errors that do not require immediate action.
|
||||||
|
- `fatal`: Something went terribly wrong. Add-on becomes unusable.
|
||||||
|
|
||||||
|
Please note that each level automatically includes log messages from a
|
||||||
|
more severe level, e.g., `debug` also shows `info` messages. By default,
|
||||||
|
the `log_level` is set to `info`, which is the recommended setting unless
|
||||||
|
you are troubleshooting.
|
||||||
|
|
||||||
|
### Option: `seconds_between_quotes`
|
||||||
|
|
||||||
|
Sets the number of seconds between the output of each quote. The value
|
||||||
|
must be between `1` and `120` seconds. This value is set to `5` seconds by
|
||||||
|
default.
|
||||||
|
|
||||||
|
## Changelog & Releases
|
||||||
|
|
||||||
|
This repository keeps a change log using [GitHub's releases][releases]
|
||||||
|
functionality.
|
||||||
|
|
||||||
|
Releases are based on [Semantic Versioning][semver], and use the format
|
||||||
|
of `MAJOR.MINOR.PATCH`. In a nutshell, the version will be incremented
|
||||||
|
based on the following:
|
||||||
|
|
||||||
|
- `MAJOR`: Incompatible or major changes.
|
||||||
|
- `MINOR`: Backwards-compatible new features and enhancements.
|
||||||
|
- `PATCH`: Backwards-compatible bugfixes and package updates.
|
||||||
|
|
||||||
|
## Support
|
||||||
|
|
||||||
|
Got questions?
|
||||||
|
|
||||||
|
You have several options to get them answered:
|
||||||
|
|
||||||
|
- The [Home Assistant Community Add-ons Discord chat server][discord] for add-on
|
||||||
|
support and feature requests.
|
||||||
|
- The [Home Assistant Discord chat server][discord-ha] for general Home
|
||||||
|
Assistant discussions and questions.
|
||||||
|
- The Home Assistant [Community Forum][forum].
|
||||||
|
- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit]
|
||||||
|
|
||||||
|
You could also [open an issue here][issue] GitHub.
|
||||||
|
|
||||||
|
## Authors & contributors
|
||||||
|
|
||||||
|
The original setup of this repository is by [Franck Nijhof][frenck].
|
||||||
|
|
||||||
|
For a full list of all authors and contributors,
|
||||||
|
check [the contributor's page][contributors].
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2017-2024 Franck Nijhof
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
|
||||||
|
[addon-badge]: https://my.home-assistant.io/badges/supervisor_addon.svg
|
||||||
|
[addon]: https://my.home-assistant.io/redirect/supervisor_addon/?addon=a0d7b954_example&repository_url=https%3A%2F%2Fgithub.com%2Fhassio-addons%2Frepository
|
||||||
|
[contributors]: https://github.com/hassio-addons/addon-example/graphs/contributors
|
||||||
|
[discord-ha]: https://discord.gg/c5DvZ4e
|
||||||
|
[discord]: https://discord.me/hassioaddons
|
||||||
|
[forum]: https://community.home-assistant.io/t/repository-community-hass-io-add-ons/24705?u=frenck
|
||||||
|
[frenck]: https://github.com/frenck
|
||||||
|
[issue]: https://github.com/hassio-addons/addon-example/issues
|
||||||
|
[reddit]: https://reddit.com/r/homeassistant
|
||||||
|
[releases]: https://github.com/hassio-addons/addon-example/releases
|
||||||
|
[semver]: http://semver.org/spec/v2.0.0.html
|
40
example/Dockerfile
Normal file
40
example/Dockerfile
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
ARG BUILD_FROM=ghcr.io/hassio-addons/base:16.3.4
|
||||||
|
# hadolint ignore=DL3006
|
||||||
|
FROM ${BUILD_FROM}
|
||||||
|
|
||||||
|
# Copy root filesystem
|
||||||
|
COPY rootfs /
|
||||||
|
|
||||||
|
# Setup base
|
||||||
|
RUN apk add --no-cache \
|
||||||
|
coreutils=9.5-r1 \
|
||||||
|
wget=1.24.5-r0
|
||||||
|
|
||||||
|
# Build arguments
|
||||||
|
ARG BUILD_ARCH
|
||||||
|
ARG BUILD_DATE
|
||||||
|
ARG BUILD_DESCRIPTION
|
||||||
|
ARG BUILD_NAME
|
||||||
|
ARG BUILD_REF
|
||||||
|
ARG BUILD_REPOSITORY
|
||||||
|
ARG BUILD_VERSION
|
||||||
|
|
||||||
|
# Labels
|
||||||
|
LABEL \
|
||||||
|
io.hass.name="${BUILD_NAME}" \
|
||||||
|
io.hass.description="${BUILD_DESCRIPTION}" \
|
||||||
|
io.hass.arch="${BUILD_ARCH}" \
|
||||||
|
io.hass.type="addon" \
|
||||||
|
io.hass.version=${BUILD_VERSION} \
|
||||||
|
maintainer="Franck Nijhof <frenck@addons.community>" \
|
||||||
|
org.opencontainers.image.title="${BUILD_NAME}" \
|
||||||
|
org.opencontainers.image.description="${BUILD_DESCRIPTION}" \
|
||||||
|
org.opencontainers.image.vendor="Home Assistant Community Add-ons" \
|
||||||
|
org.opencontainers.image.authors="Franck Nijhof <frenck@addons.community>" \
|
||||||
|
org.opencontainers.image.licenses="MIT" \
|
||||||
|
org.opencontainers.image.url="https://addons.community" \
|
||||||
|
org.opencontainers.image.source="https://github.com/${BUILD_REPOSITORY}" \
|
||||||
|
org.opencontainers.image.documentation="https://github.com/${BUILD_REPOSITORY}/blob/main/README.md" \
|
||||||
|
org.opencontainers.image.created=${BUILD_DATE} \
|
||||||
|
org.opencontainers.image.revision=${BUILD_REF} \
|
||||||
|
org.opencontainers.image.version=${BUILD_VERSION}
|
8
example/build.yaml
Normal file
8
example/build.yaml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
build_from:
|
||||||
|
aarch64: ghcr.io/hassio-addons/base:16.3.4
|
||||||
|
amd64: ghcr.io/hassio-addons/base:16.3.4
|
||||||
|
armv7: ghcr.io/hassio-addons/base:16.3.4
|
||||||
|
codenotary:
|
||||||
|
base_image: codenotary@frenck.dev
|
||||||
|
signer: codenotary@frenck.dev
|
18
example/config.yaml
Normal file
18
example/config.yaml
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
name: Example
|
||||||
|
version: dev
|
||||||
|
slug: example
|
||||||
|
description: Example add-on by Community Home Assistant Add-ons
|
||||||
|
url: https://github.com/hassio-addons/addon-example
|
||||||
|
codenotary: codenotary@frenck.dev
|
||||||
|
init: false
|
||||||
|
arch:
|
||||||
|
- aarch64
|
||||||
|
- amd64
|
||||||
|
- armv7
|
||||||
|
options:
|
||||||
|
log_level: info
|
||||||
|
seconds_between_quotes: 5
|
||||||
|
schema:
|
||||||
|
log_level: list(trace|debug|info|notice|warning|error|fatal)
|
||||||
|
seconds_between_quotes: int(1,120)
|
BIN
example/icon.png
Normal file
BIN
example/icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.9 KiB |
BIN
example/logo.png
Normal file
BIN
example/logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 130 KiB |
45
example/rootfs/etc/s6-overlay/s6-rc.d/example1/finish
Normal file
45
example/rootfs/etc/s6-overlay/s6-rc.d/example1/finish
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
#!/command/with-contenv bashio
|
||||||
|
# shellcheck shell=bash
|
||||||
|
# ==============================================================================
|
||||||
|
# Home Assistant Community Add-on: Example
|
||||||
|
# ==============================================================================
|
||||||
|
declare exit_code
|
||||||
|
readonly exit_code_container=$(</run/s6-linux-init-container-results/exitcode)
|
||||||
|
readonly exit_code_service="${1}"
|
||||||
|
readonly exit_code_signal="${2}"
|
||||||
|
readonly service="example1"
|
||||||
|
|
||||||
|
bashio::log.info \
|
||||||
|
"Service ${service} exited with code ${exit_code_service}" \
|
||||||
|
"(by signal ${exit_code_signal})"
|
||||||
|
|
||||||
|
# Received a signal
|
||||||
|
if [[ "${exit_code_service}" -eq 256 ]]; then
|
||||||
|
|
||||||
|
# The signal might be a result of another service crashing. Only
|
||||||
|
# overwrite the container exit code if it is not already set.
|
||||||
|
if [[ "${exit_code_container}" -eq 0 ]]; then
|
||||||
|
echo $((128 + $exit_code_signal)) > /run/s6-linux-init-container-results/exitcode
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If the signal is SIGTERM, we should halt the container and take down
|
||||||
|
# the whole process tree.
|
||||||
|
[[ "${exit_code_signal}" -eq 15 ]] && exec /run/s6/basedir/bin/halt
|
||||||
|
|
||||||
|
# The service exited with a non-zero exit code, which means it crashed.
|
||||||
|
elif [[ "${exit_code_service}" -ne 0 ]]; then
|
||||||
|
|
||||||
|
# The service might be a result of another service crashing. Only
|
||||||
|
# overwrite the container exit code if it is not already set.
|
||||||
|
if [[ "${exit_code_container}" -eq 0 ]]; then
|
||||||
|
echo "${exit_code_service}" > /run/s6-linux-init-container-results/exitcode
|
||||||
|
fi
|
||||||
|
|
||||||
|
# We should halt the container and take down the whole process tree.
|
||||||
|
exec /run/s6/basedir/bin/halt
|
||||||
|
|
||||||
|
# The service exited with a zero exit code, which means it exited, let
|
||||||
|
# S6 supervision restart it.
|
||||||
|
else
|
||||||
|
bashio::log.info "Service ${service} restarting..."
|
||||||
|
fi
|
10
example/rootfs/etc/s6-overlay/s6-rc.d/example1/run
Normal file
10
example/rootfs/etc/s6-overlay/s6-rc.d/example1/run
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
#!/command/with-contenv bashio
|
||||||
|
# shellcheck shell=bash
|
||||||
|
# ==============================================================================
|
||||||
|
# Home Assistant Community Add-on: Example
|
||||||
|
# Runs example1 script
|
||||||
|
# ==============================================================================
|
||||||
|
|
||||||
|
bashio::log.info "Starting Example1..."
|
||||||
|
|
||||||
|
exec /usr/bin/example1.sh
|
1
example/rootfs/etc/s6-overlay/s6-rc.d/example1/type
Normal file
1
example/rootfs/etc/s6-overlay/s6-rc.d/example1/type
Normal file
@ -0,0 +1 @@
|
|||||||
|
longrun
|
45
example/rootfs/etc/s6-overlay/s6-rc.d/example2/finish
Normal file
45
example/rootfs/etc/s6-overlay/s6-rc.d/example2/finish
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
#!/command/with-contenv bashio
|
||||||
|
# shellcheck shell=bash
|
||||||
|
# ==============================================================================
|
||||||
|
# Home Assistant Community Add-on: Example
|
||||||
|
# ==============================================================================
|
||||||
|
declare exit_code
|
||||||
|
readonly exit_code_container=$(</run/s6-linux-init-container-results/exitcode)
|
||||||
|
readonly exit_code_service="${1}"
|
||||||
|
readonly exit_code_signal="${2}"
|
||||||
|
readonly service="example2"
|
||||||
|
|
||||||
|
bashio::log.info \
|
||||||
|
"Service ${service} exited with code ${exit_code_service}" \
|
||||||
|
"(by signal ${exit_code_signal})"
|
||||||
|
|
||||||
|
# Received a signal
|
||||||
|
if [[ "${exit_code_service}" -eq 256 ]]; then
|
||||||
|
|
||||||
|
# The signal might be a result of another service crashing. Only
|
||||||
|
# overwrite the container exit code if it is not already set.
|
||||||
|
if [[ "${exit_code_container}" -eq 0 ]]; then
|
||||||
|
echo $((128 + $exit_code_signal)) > /run/s6-linux-init-container-results/exitcode
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If the signal is SIGTERM, we should halt the container and take down
|
||||||
|
# the whole process tree.
|
||||||
|
[[ "${exit_code_signal}" -eq 15 ]] && exec /run/s6/basedir/bin/halt
|
||||||
|
|
||||||
|
# The service exited with a non-zero exit code, which means it crashed.
|
||||||
|
elif [[ "${exit_code_service}" -ne 0 ]]; then
|
||||||
|
|
||||||
|
# The service might be a result of another service crashing. Only
|
||||||
|
# overwrite the container exit code if it is not already set.
|
||||||
|
if [[ "${exit_code_container}" -eq 0 ]]; then
|
||||||
|
echo "${exit_code_service}" > /run/s6-linux-init-container-results/exitcode
|
||||||
|
fi
|
||||||
|
|
||||||
|
# We should halt the container and take down the whole process tree.
|
||||||
|
exec /run/s6/basedir/bin/halt
|
||||||
|
|
||||||
|
# The service exited with a zero exit code, which means it exited, let
|
||||||
|
# S6 supervision restart it.
|
||||||
|
else
|
||||||
|
bashio::log.info "Service ${service} restarting..."
|
||||||
|
fi
|
10
example/rootfs/etc/s6-overlay/s6-rc.d/example2/run
Normal file
10
example/rootfs/etc/s6-overlay/s6-rc.d/example2/run
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
#!/command/with-contenv bashio
|
||||||
|
# shellcheck shell=bash
|
||||||
|
# ==============================================================================
|
||||||
|
# Home Assistant Community Add-on: Example
|
||||||
|
# Runs example2 script
|
||||||
|
# ==============================================================================
|
||||||
|
|
||||||
|
bashio::log.info "Starting Example2..."
|
||||||
|
|
||||||
|
exec /usr/bin/example2.sh
|
1
example/rootfs/etc/s6-overlay/s6-rc.d/example2/type
Normal file
1
example/rootfs/etc/s6-overlay/s6-rc.d/example2/type
Normal file
@ -0,0 +1 @@
|
|||||||
|
longrun
|
8
example/rootfs/etc/s6-overlay/s6-rc.d/init-example/run
Normal file
8
example/rootfs/etc/s6-overlay/s6-rc.d/init-example/run
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
#!/command/with-contenv bashio
|
||||||
|
# shellcheck shell=bash
|
||||||
|
# ==============================================================================
|
||||||
|
# Home Assistant Community Add-on: Example
|
||||||
|
# Example init script, runs before any other service
|
||||||
|
# ==============================================================================
|
||||||
|
|
||||||
|
bashio::log.info "Oh, hi! I'm the init script!"
|
1
example/rootfs/etc/s6-overlay/s6-rc.d/init-example/type
Normal file
1
example/rootfs/etc/s6-overlay/s6-rc.d/init-example/type
Normal file
@ -0,0 +1 @@
|
|||||||
|
oneshot
|
1
example/rootfs/etc/s6-overlay/s6-rc.d/init-example/up
Normal file
1
example/rootfs/etc/s6-overlay/s6-rc.d/init-example/up
Normal file
@ -0,0 +1 @@
|
|||||||
|
/etc/s6-overlay/s6-rc.d/init-example/run
|
116
example/rootfs/usr/bin/example1.sh
Normal file
116
example/rootfs/usr/bin/example1.sh
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
#!/command/with-contenv bashio
|
||||||
|
# shellcheck shell=bash
|
||||||
|
# ==============================================================================
|
||||||
|
# Home Assistant Community Add-on: Example
|
||||||
|
#
|
||||||
|
# Example add-on for Home Assistant.
|
||||||
|
# This add-on displays a random quote every X seconds.
|
||||||
|
# ==============================================================================
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
# Get a random quote from quotationspage.com
|
||||||
|
#
|
||||||
|
# Arguments:
|
||||||
|
# None
|
||||||
|
# Returns:
|
||||||
|
# String with the quote
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
get_quote_online() {
|
||||||
|
local number
|
||||||
|
local html
|
||||||
|
local quote
|
||||||
|
|
||||||
|
bashio::log.trace "${FUNCNAME[0]}"
|
||||||
|
|
||||||
|
number=$(( ( RANDOM % 999 ) + 1 ))
|
||||||
|
html=$(wget -q -O - "http://www.quotationspage.com/quote/${number}.html")
|
||||||
|
|
||||||
|
quote=$(grep -e "<dt>" -e "</dd>" <<< "${html}" \
|
||||||
|
| awk -F'[<>]' '{
|
||||||
|
if($2 ~ /dt/)
|
||||||
|
{ print $3 }
|
||||||
|
else if($4 ~ /b/)
|
||||||
|
{ print "-- " $7 " n(" $19 ")"}
|
||||||
|
}'
|
||||||
|
)
|
||||||
|
|
||||||
|
echo "${quote}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
# Get a random quote from a prefined set of quotes
|
||||||
|
#
|
||||||
|
# Arguments:
|
||||||
|
# None
|
||||||
|
# Returns:
|
||||||
|
# String with the quote
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
get_quote_offline() {
|
||||||
|
local -i number
|
||||||
|
local -a quotes
|
||||||
|
|
||||||
|
bashio::log.trace "${FUNCNAME[0]}"
|
||||||
|
|
||||||
|
quotes+=("Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.\\n -Samuel Beckett")
|
||||||
|
quotes+=("Never give up, for that is just the place and time that the tide will turn.\\n -Harriet Beecher Stowe")
|
||||||
|
quotes+=("Our greatest weakness lies in giving up. The most certain way to succeed is always to try just one more time.\\n -Thomas A. Edison")
|
||||||
|
quotes+=("Life isn't about getting and having, it's about giving and being.\\n -Kevin Kruse")
|
||||||
|
quotes+=("Strive not to be a success, but rather to be of value.\\n -Albert Einstein")
|
||||||
|
quotes+=("You miss 100% of the shots you don't take.\\n -Wayne Gretzky")
|
||||||
|
quotes+=("People who are unable to motivate themselves must be content with mediocrity, no matter how impressive their other talents. \\n -Andrew Carnegie")
|
||||||
|
quotes+=("Design is not just what it looks like and feels like. Design is how it works.\\n -Steve Jobs")
|
||||||
|
quotes+=("Only those who dare to fail greatly can ever achieve greatly.\\n -Robert F. Kennedy")
|
||||||
|
quotes+=("All our dreams can come true, if we have the courage to pursue them.\\n -Walt Disney")
|
||||||
|
quotes+=("Success consists of going from failure to failure without loss of enthusiasm.\\n -Winston Churchill")
|
||||||
|
|
||||||
|
number=$(( ( RANDOM % 11 ) + 1 ))
|
||||||
|
echo "${quotes[$number]}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
# Displays a random quote
|
||||||
|
#
|
||||||
|
# Arguments:
|
||||||
|
# None
|
||||||
|
# Returns:
|
||||||
|
# String with the quote
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
display_quote() {
|
||||||
|
local quote
|
||||||
|
local timestamp
|
||||||
|
|
||||||
|
bashio::log.trace "${FUNCNAME[0]}"
|
||||||
|
|
||||||
|
if wget -q --spider http://www.quotationspage.com; then
|
||||||
|
quote=$(get_quote_online)
|
||||||
|
else
|
||||||
|
bashio::log.notice \
|
||||||
|
'Could not connect to quotationspage.com, using an offline quote'
|
||||||
|
quote=$(get_quote_offline)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# shellcheck disable=SC2001
|
||||||
|
quote=$(sed 's/n()//g' <<< "${quote}" | xargs -0 echo | fmt -40)
|
||||||
|
timestamp=$(date +"%T")
|
||||||
|
|
||||||
|
bashio::log.info "Random quote loaded @ ${timestamp}"
|
||||||
|
echo -e "${quote}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# RUN LOGIC
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
main() {
|
||||||
|
local sleep
|
||||||
|
|
||||||
|
bashio::log.trace "${FUNCNAME[0]}"
|
||||||
|
|
||||||
|
sleep=$(bashio::config 'seconds_between_quotes')
|
||||||
|
bashio::log.info "Seconds between each quotes is set to: ${sleep}"
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
display_quote
|
||||||
|
sleep "${sleep}"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
main "$@"
|
16
example/rootfs/usr/bin/example2.sh
Normal file
16
example/rootfs/usr/bin/example2.sh
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#!/command/with-contenv bashio
|
||||||
|
# shellcheck shell=bash
|
||||||
|
# ==============================================================================
|
||||||
|
# Home Assistant Community Add-on: Example
|
||||||
|
#
|
||||||
|
# Example add-on for Home Assistant.
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
main() {
|
||||||
|
bashio::log.trace "${FUNCNAME[0]}"
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
echo "Second Script Output"
|
||||||
|
sleep 10
|
||||||
|
done
|
||||||
|
}
|
||||||
|
main "$@"
|
10
example/translations/en.yaml
Normal file
10
example/translations/en.yaml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
configuration:
|
||||||
|
log_level:
|
||||||
|
name: Log level
|
||||||
|
description: The amount of logging the add-on should do.
|
||||||
|
seconds_between_quotes:
|
||||||
|
name: Seconds between quotes
|
||||||
|
description: >-
|
||||||
|
The number of seconds the add-on waits until showing a new quote in the
|
||||||
|
add-on log.
|
80
gitea_act_runner/.README.j2
Normal file
80
gitea_act_runner/.README.j2
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
# Home Assistant Community Add-on: Example
|
||||||
|
|
||||||
|
[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield]
|
||||||
|
|
||||||
|
[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum]
|
||||||
|
|
||||||
|
[![Sponsor Frenck via GitHub Sponsors][github-sponsors-shield]][github-sponsors]
|
||||||
|
|
||||||
|
[![Support Frenck on Patreon][patreon-shield]][patreon]
|
||||||
|
|
||||||
|
Example add-on by Community Home Assistant add-ons.
|
||||||
|
|
||||||
|
## About
|
||||||
|
|
||||||
|
This is an example add-on for Home Assistant. When started, it displays a
|
||||||
|
random quote every 5 seconds.
|
||||||
|
|
||||||
|
It shows off several features and structures like:
|
||||||
|
|
||||||
|
- Full blown GitHub repository.
|
||||||
|
- General Dockerfile structure and setup.
|
||||||
|
- The use of the `config.yaml` and `build.yaml` files.
|
||||||
|
- General shell scripting structure (`run.sh`).
|
||||||
|
- Quality assurance using CodeClimate.
|
||||||
|
- Continuous integration and deployment using GitLab.
|
||||||
|
- Usage of the Community Home Assistant Add-ons build environment.
|
||||||
|
- Small use of the Bash function library in our base images.
|
||||||
|
- The use of Docker label schema.
|
||||||
|
|
||||||
|
{% if channel == "edge" %}
|
||||||
|
## WARNING! THIS IS AN EDGE VERSION!
|
||||||
|
|
||||||
|
This Home Assistant Add-ons repository contains edge builds of add-ons.
|
||||||
|
Edge builds add-ons are based upon the latest development version.
|
||||||
|
|
||||||
|
- They may not work at all.
|
||||||
|
- They might stop working at any time.
|
||||||
|
- They could have a negative impact on your system.
|
||||||
|
|
||||||
|
This repository was created for:
|
||||||
|
|
||||||
|
- Anybody willing to test.
|
||||||
|
- Anybody interested in trying out upcoming add-ons or add-on features.
|
||||||
|
- Developers.
|
||||||
|
|
||||||
|
If you are more interested in stable releases of our add-ons:
|
||||||
|
|
||||||
|
<https://github.com/hassio-addons/repository>
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
{% if channel == "beta" %}
|
||||||
|
## WARNING! THIS IS A BETA VERSION!
|
||||||
|
|
||||||
|
This Home Assistant Add-ons repository contains beta releases of add-ons.
|
||||||
|
|
||||||
|
- They might stop working at any time.
|
||||||
|
- They could have a negative impact on your system.
|
||||||
|
|
||||||
|
This repository was created for:
|
||||||
|
|
||||||
|
- Anybody willing to test.
|
||||||
|
- Anybody interested in trying out upcoming add-ons or add-on features.
|
||||||
|
|
||||||
|
If you are more interested in stable releases of our add-ons:
|
||||||
|
|
||||||
|
<https://github.com/hassio-addons/repository>
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
[discord-shield]: https://img.shields.io/discord/478094546522079232.svg
|
||||||
|
[discord]: https://discord.me/hassioaddons
|
||||||
|
[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg
|
||||||
|
[forum]: https://community.home-assistant.io?u=frenck
|
||||||
|
[github-sponsors-shield]: https://frenck.dev/wp-content/uploads/2019/12/github_sponsor.png
|
||||||
|
[github-sponsors]: https://github.com/sponsors/frenck
|
||||||
|
[maintenance-shield]: https://img.shields.io/maintenance/yes/2024.svg
|
||||||
|
[patreon-shield]: https://frenck.dev/wp-content/uploads/2019/12/patreon.png
|
||||||
|
[patreon]: https://www.patreon.com/frenck
|
||||||
|
[project-stage-shield]: https://img.shields.io/badge/project%20stage-production%20ready-brightgreen.svg
|
||||||
|
[release-shield]: https://img.shields.io/badge/version-{{ version }}-blue.svg
|
||||||
|
[release]: {{ repo }}/tree/{{ version }}
|
139
gitea_act_runner/DOCS.md
Normal file
139
gitea_act_runner/DOCS.md
Normal file
@ -0,0 +1,139 @@
|
|||||||
|
# Home Assistant Community Add-on: Example
|
||||||
|
|
||||||
|
This is an example add-on for Home Assistant. When started, it displays a
|
||||||
|
random quote every 5 seconds.
|
||||||
|
|
||||||
|
It shows off several features and structures like:
|
||||||
|
|
||||||
|
- Full blown GitHub repository.
|
||||||
|
- General Dockerfile structure and setup.
|
||||||
|
- The use of the `config.yaml` and `build.yaml` files.
|
||||||
|
- General shell scripting structure (`run.sh`).
|
||||||
|
- Quality assurance using CodeClimate.
|
||||||
|
- Continuous integration and deployment using GitLab.
|
||||||
|
- Usage of the Community Home Assistant Add-ons build environment.
|
||||||
|
- Small use of the Bash function library in our base images.
|
||||||
|
- The use of Docker label schema.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
The installation of this add-on is pretty straightforward and not different in
|
||||||
|
comparison to installing any other Home Assistant add-on.
|
||||||
|
|
||||||
|
1. Click the Home Assistant My button below to open the add-on on your Home
|
||||||
|
Assistant instance.
|
||||||
|
|
||||||
|
[![Open this add-on in your Home Assistant instance.][addon-badge]][addon]
|
||||||
|
|
||||||
|
1. Click the "Install" button to install the add-on.
|
||||||
|
1. Start the "Example" add-on.
|
||||||
|
1. Check the logs of the "Example" add-on to see it in action.
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
Eventought this add-on is just an example add-on, it does come with some
|
||||||
|
configuration options to play around with.
|
||||||
|
|
||||||
|
**Note**: _Remember to restart the add-on when the configuration is changed._
|
||||||
|
|
||||||
|
Example add-on configuration:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
log_level: info
|
||||||
|
seconds_between_quotes: 5
|
||||||
|
```
|
||||||
|
|
||||||
|
### Option: `log_level`
|
||||||
|
|
||||||
|
The `log_level` option controls the level of log output by the add-on and can
|
||||||
|
be changed to be more or less verbose, which might be useful when you are
|
||||||
|
dealing with an unknown issue. Possible values are:
|
||||||
|
|
||||||
|
- `trace`: Show every detail, like all called internal functions.
|
||||||
|
- `debug`: Shows detailed debug information.
|
||||||
|
- `info`: Normal (usually) interesting events.
|
||||||
|
- `warning`: Exceptional occurrences that are not errors.
|
||||||
|
- `error`: Runtime errors that do not require immediate action.
|
||||||
|
- `fatal`: Something went terribly wrong. Add-on becomes unusable.
|
||||||
|
|
||||||
|
Please note that each level automatically includes log messages from a
|
||||||
|
more severe level, e.g., `debug` also shows `info` messages. By default,
|
||||||
|
the `log_level` is set to `info`, which is the recommended setting unless
|
||||||
|
you are troubleshooting.
|
||||||
|
|
||||||
|
### Option: `seconds_between_quotes`
|
||||||
|
|
||||||
|
Sets the number of seconds between the output of each quote. The value
|
||||||
|
must be between `1` and `120` seconds. This value is set to `5` seconds by
|
||||||
|
default.
|
||||||
|
|
||||||
|
## Changelog & Releases
|
||||||
|
|
||||||
|
This repository keeps a change log using [GitHub's releases][releases]
|
||||||
|
functionality.
|
||||||
|
|
||||||
|
Releases are based on [Semantic Versioning][semver], and use the format
|
||||||
|
of `MAJOR.MINOR.PATCH`. In a nutshell, the version will be incremented
|
||||||
|
based on the following:
|
||||||
|
|
||||||
|
- `MAJOR`: Incompatible or major changes.
|
||||||
|
- `MINOR`: Backwards-compatible new features and enhancements.
|
||||||
|
- `PATCH`: Backwards-compatible bugfixes and package updates.
|
||||||
|
|
||||||
|
## Support
|
||||||
|
|
||||||
|
Got questions?
|
||||||
|
|
||||||
|
You have several options to get them answered:
|
||||||
|
|
||||||
|
- The [Home Assistant Community Add-ons Discord chat server][discord] for add-on
|
||||||
|
support and feature requests.
|
||||||
|
- The [Home Assistant Discord chat server][discord-ha] for general Home
|
||||||
|
Assistant discussions and questions.
|
||||||
|
- The Home Assistant [Community Forum][forum].
|
||||||
|
- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit]
|
||||||
|
|
||||||
|
You could also [open an issue here][issue] GitHub.
|
||||||
|
|
||||||
|
## Authors & contributors
|
||||||
|
|
||||||
|
The original setup of this repository is by [Franck Nijhof][frenck].
|
||||||
|
|
||||||
|
For a full list of all authors and contributors,
|
||||||
|
check [the contributor's page][contributors].
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2017-2024 Franck Nijhof
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
|
||||||
|
[addon-badge]: https://my.home-assistant.io/badges/supervisor_addon.svg
|
||||||
|
[addon]: https://my.home-assistant.io/redirect/supervisor_addon/?addon=a0d7b954_example&repository_url=https%3A%2F%2Fgithub.com%2Fhassio-addons%2Frepository
|
||||||
|
[contributors]: https://github.com/hassio-addons/addon-example/graphs/contributors
|
||||||
|
[discord-ha]: https://discord.gg/c5DvZ4e
|
||||||
|
[discord]: https://discord.me/hassioaddons
|
||||||
|
[forum]: https://community.home-assistant.io/t/repository-community-hass-io-add-ons/24705?u=frenck
|
||||||
|
[frenck]: https://github.com/frenck
|
||||||
|
[issue]: https://github.com/hassio-addons/addon-example/issues
|
||||||
|
[reddit]: https://reddit.com/r/homeassistant
|
||||||
|
[releases]: https://github.com/hassio-addons/addon-example/releases
|
||||||
|
[semver]: http://semver.org/spec/v2.0.0.html
|
@ -1,11 +1,11 @@
|
|||||||
ARG BUILD_FROM
|
ARG BUILD_FROM=ghcr.io/hassio-addons/base:16.3.4
|
||||||
FROM $BUILD_FROM
|
# hadolint ignore=DL3006
|
||||||
|
FROM ${BUILD_FROM}
|
||||||
|
|
||||||
ENV LANG C.UTF-8
|
ENV LANG C.UTF-8
|
||||||
|
|
||||||
# Setup base system
|
# Copy root filesystem
|
||||||
ARG \
|
COPY rootfs /
|
||||||
BUILD_ARCH
|
|
||||||
|
|
||||||
# Install necessary dependencies
|
# Install necessary dependencies
|
||||||
RUN apk add --no-cache git docker-cli python3 py3-pip && \
|
RUN apk add --no-cache git docker-cli python3 py3-pip && \
|
||||||
@ -15,11 +15,15 @@ RUN adduser -s /bin/false -D -H actrunner
|
|||||||
RUN python3 -m venv /opt/ansible-venv && \
|
RUN python3 -m venv /opt/ansible-venv && \
|
||||||
/opt/ansible-venv/bin/pip install --no-cache-dir ansible
|
/opt/ansible-venv/bin/pip install --no-cache-dir ansible
|
||||||
|
|
||||||
# Optional: Additional steps for SSH/GitHub authentication or configuration
|
|
||||||
|
|
||||||
# Copy your add-on scripts and configuration files
|
# Build arguments
|
||||||
COPY rootfs /
|
ARG BUILD_ARCH
|
||||||
RUN chmod +x /etc/services.d/actrunner/*
|
ARG BUILD_DATE
|
||||||
|
ARG BUILD_DESCRIPTION
|
||||||
|
ARG BUILD_NAME
|
||||||
|
ARG BUILD_REF
|
||||||
|
ARG BUILD_REPOSITORY
|
||||||
|
ARG BUILD_VERSION
|
||||||
|
|
||||||
# Labels
|
# Labels
|
||||||
LABEL \
|
LABEL \
|
||||||
@ -36,3 +40,4 @@ LABEL \
|
|||||||
org.opencontainers.image.licenses="NO" \
|
org.opencontainers.image.licenses="NO" \
|
||||||
org.opencontainers.image.url="https://mezgit.duckdns.org/mezned/HAddons" \
|
org.opencontainers.image.url="https://mezgit.duckdns.org/mezned/HAddons" \
|
||||||
org.opencontainers.image.source="https://mezgit.duckdns.org/mezned/HAddons/gitea_act_runner"
|
org.opencontainers.image.source="https://mezgit.duckdns.org/mezned/HAddons/gitea_act_runner"
|
||||||
|
|
||||||
|
8
gitea_act_runner/build.yaml
Normal file
8
gitea_act_runner/build.yaml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
build_from:
|
||||||
|
aarch64: ghcr.io/hassio-addons/base:16.3.4
|
||||||
|
amd64: ghcr.io/hassio-addons/base:16.3.4
|
||||||
|
armv7: ghcr.io/hassio-addons/base:16.3.4
|
||||||
|
codenotary:
|
||||||
|
base_image: codenotary@feres.dev
|
||||||
|
signer: codenotary@feres.dev
|
@ -1,15 +1,15 @@
|
|||||||
|
---
|
||||||
name: "Act Runner and Ansible Add-on"
|
name: "Act Runner and Ansible Add-on"
|
||||||
version: "1.0.0"
|
version: "1.0.0"
|
||||||
slug: "act_runner_ansible"
|
slug: "act_runner_ansible"
|
||||||
description: "Home Assistant add-on that runs Act runner with Gitea integration."
|
description: "Home Assistant add-on that runs Act runner with Gitea integration."
|
||||||
|
url: https://mezgit.duckdns.org/mezned/HAddons/gitea_act_runner
|
||||||
|
codenotary: codenotary@feres.dev
|
||||||
|
init: false
|
||||||
arch:
|
arch:
|
||||||
- aarch64
|
- aarch64
|
||||||
- amd64
|
- amd64
|
||||||
- armhf
|
|
||||||
- armv7
|
- armv7
|
||||||
- i386
|
|
||||||
startup: "application"
|
|
||||||
boot: "auto"
|
|
||||||
options:
|
options:
|
||||||
gitea_url: "https://your-gitea-instance.com"
|
gitea_url: "https://your-gitea-instance.com"
|
||||||
gitea_token: "your_token"
|
gitea_token: "your_token"
|
||||||
@ -21,4 +21,4 @@ schema:
|
|||||||
gitea_token: str
|
gitea_token: str
|
||||||
repository: str
|
repository: str
|
||||||
act_runner_options: str?
|
act_runner_options: str?
|
||||||
log_level: list(trace|debug|info|notice|warning|error|fatal)?
|
log_level: list(trace|debug|info|notice|warning|error|fatal)?
|
||||||
|
BIN
gitea_act_runner/icon.png
Normal file
BIN
gitea_act_runner/icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.9 KiB |
BIN
gitea_act_runner/logo.png
Normal file
BIN
gitea_act_runner/logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.9 KiB |
@ -0,0 +1,45 @@
|
|||||||
|
#!/command/with-contenv bashio
|
||||||
|
# shellcheck shell=bash
|
||||||
|
# ==============================================================================
|
||||||
|
# Home Assistant Community Add-on: Example
|
||||||
|
# ==============================================================================
|
||||||
|
declare exit_code
|
||||||
|
readonly exit_code_container=$(</run/s6-linux-init-container-results/exitcode)
|
||||||
|
readonly exit_code_service="${1}"
|
||||||
|
readonly exit_code_signal="${2}"
|
||||||
|
readonly service="actrunner"
|
||||||
|
|
||||||
|
bashio::log.info \
|
||||||
|
"Service ${service} exited with code ${exit_code_service}" \
|
||||||
|
"(by signal ${exit_code_signal})"
|
||||||
|
|
||||||
|
# Received a signal
|
||||||
|
if [[ "${exit_code_service}" -eq 256 ]]; then
|
||||||
|
|
||||||
|
# The signal might be a result of another service crashing. Only
|
||||||
|
# overwrite the container exit code if it is not already set.
|
||||||
|
if [[ "${exit_code_container}" -eq 0 ]]; then
|
||||||
|
echo $((128 + $exit_code_signal)) > /run/s6-linux-init-container-results/exitcode
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If the signal is SIGTERM, we should halt the container and take down
|
||||||
|
# the whole process tree.
|
||||||
|
[[ "${exit_code_signal}" -eq 15 ]] && exec /run/s6/basedir/bin/halt
|
||||||
|
|
||||||
|
# The service exited with a non-zero exit code, which means it crashed.
|
||||||
|
elif [[ "${exit_code_service}" -ne 0 ]]; then
|
||||||
|
|
||||||
|
# The service might be a result of another service crashing. Only
|
||||||
|
# overwrite the container exit code if it is not already set.
|
||||||
|
if [[ "${exit_code_container}" -eq 0 ]]; then
|
||||||
|
echo "${exit_code_service}" > /run/s6-linux-init-container-results/exitcode
|
||||||
|
fi
|
||||||
|
|
||||||
|
# We should halt the container and take down the whole process tree.
|
||||||
|
exec /run/s6/basedir/bin/halt
|
||||||
|
|
||||||
|
# The service exited with a zero exit code, which means it exited, let
|
||||||
|
# S6 supervision restart it.
|
||||||
|
else
|
||||||
|
bashio::log.info "Service ${service} restarting..."
|
||||||
|
fi
|
@ -1,10 +1,10 @@
|
|||||||
#!/usr/bin/with-contenv bashio
|
#!/command/with-contenv bashio
|
||||||
# shellcheck shell=bash
|
# shellcheck shell=bash
|
||||||
# ==============================================================================
|
# ==============================================================================
|
||||||
# Home Assistant Add-on: actrunner
|
# Home Assistant Community Add-on: actrunner
|
||||||
# Runs actrunner
|
# Runs actrunner script
|
||||||
# ==============================================================================
|
# ==============================================================================
|
||||||
readonly PROMTAIL_CONFIG='/etc/promtail/config.yaml'
|
|
||||||
declare log_level
|
declare log_level
|
||||||
|
|
||||||
bashio::log.info 'Starting actrunner...'
|
bashio::log.info 'Starting actrunner...'
|
||||||
@ -47,4 +47,4 @@ curl -X POST "$GITEA_URL/api/v1/repos/$REPOSITORY/actions/runners" \
|
|||||||
-d '{ "name": "Act Runner", "labels": ["self-hosted"] }'
|
-d '{ "name": "Act Runner", "labels": ["self-hosted"] }'
|
||||||
|
|
||||||
bashio::log.info "Handing over control to actrunner..."
|
bashio::log.info "Handing over control to actrunner..."
|
||||||
exec s6-setuidgid actrunner act $ACT_OPTIONS
|
exec /usr/local/bin/act $ACT_OPTIONS
|
@ -1,15 +0,0 @@
|
|||||||
#!/usr/bin/env bashio
|
|
||||||
# ==============================================================================
|
|
||||||
# Take down the S6 supervision tree when actrunner 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"
|
|
Loading…
x
Reference in New Issue
Block a user