This commit is contained in:
ai-dev 2024-11-01 18:10:15 +01:00
parent 4a50886434
commit bde29c6731
3 changed files with 65 additions and 5 deletions

View File

@ -10,7 +10,7 @@ ARG \
# 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 && \
curl -s https://raw.githubusercontent.com/nektos/act/master/install.sh | bash curl -s https://raw.githubusercontent.com/nektos/act/master/install.sh | bash
RUN adduser -s /bin/false -D -H actrunner
# Create a directory for the virtual environment and install Ansible inside it # Create a directory for the virtual environment and install Ansible inside it
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
@ -18,10 +18,8 @@ RUN python3 -m venv /opt/ansible-venv && \
# Optional: Additional steps for SSH/GitHub authentication or configuration # Optional: Additional steps for SSH/GitHub authentication or configuration
# Copy your add-on scripts and configuration files # Copy your add-on scripts and configuration files
COPY run.sh /run.sh COPY rootfs /
RUN chmod +x /run.sh RUN chmod +x /etc/services.d/actrunner/*
CMD [ "/run.sh" ]
# Labels # Labels
LABEL \ LABEL \

View File

@ -0,0 +1,15 @@
#!/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"

View File

@ -0,0 +1,47 @@
#!/usr/bin/with-contenv bashio
# shellcheck shell=bash
# ==============================================================================
# Home Assistant Add-on: actrunner
# Runs actrunner
# ==============================================================================
readonly PROMTAIL_CONFIG='/etc/promtail/config.yaml'
declare log_level
bashio::log.info 'Starting actrunner...'
journal_path='/var/log/journal'
if ! bashio::fs.directory_exists "${journal_path}" || [ -z "$(ls -A ${journal_path})" ]; then
bashio::log.info "No journal at ${journal_path}, looking for journal in /run/log/journal instead"
journal_path='/run/log/journal'
fi
case "$(bashio::config 'log_level')" in \
trace) ;& \
debug) log_level='debug' ;; \
notice) ;& \
warning) log_level='warn' ;; \
error) ;& \
fatal) log_level='error' ;; \
*) log_level='info' ;; \
esac;
bashio::log.info "Promtail log level set to ${log_level}"
export "JOURNAL_PATH=${journal_path}"
export "LOG_LEVEL=${log_level}"
# Activate the Ansible virtual environment
source /opt/ansible-venv/bin/activate
# Load configuration from Home Assistant
GITEA_URL=$(bashio::config 'gitea_url')
GITEA_TOKEN=$(bashio::config 'gitea_token')
REPOSITORY=$(bashio::config 'repository')
ACT_OPTIONS=$(bashio::config 'act_runner_options')
# Register Act runner with Gitea (if needed)
curl -X POST "$GITEA_URL/api/v1/repos/$REPOSITORY/actions/runners" \
-H "Authorization: token $GITEA_TOKEN" \
-d '{ "name": "Act Runner", "labels": ["self-hosted"] }'
bashio::log.info "Handing over control to actrunner..."
exec s6-setuidgid actrunner act $ACT_OPTIONS