From bde29c67314e16b6dccba49821cff095f4ace8b5 Mon Sep 17 00:00:00 2001 From: ai-dev Date: Fri, 1 Nov 2024 18:10:15 +0100 Subject: [PATCH] update --- gitea_act_runner/Dockerfile | 8 ++-- .../rootfs/etc/services.d/actrunner/finish | 15 ++++++ .../rootfs/etc/services.d/actrunner/run | 47 +++++++++++++++++++ 3 files changed, 65 insertions(+), 5 deletions(-) create mode 100644 gitea_act_runner/rootfs/etc/services.d/actrunner/finish create mode 100644 gitea_act_runner/rootfs/etc/services.d/actrunner/run diff --git a/gitea_act_runner/Dockerfile b/gitea_act_runner/Dockerfile index 76263e4..843a86e 100644 --- a/gitea_act_runner/Dockerfile +++ b/gitea_act_runner/Dockerfile @@ -10,7 +10,7 @@ ARG \ # Install necessary dependencies RUN apk add --no-cache git docker-cli python3 py3-pip && \ 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 RUN python3 -m venv /opt/ansible-venv && \ /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 # Copy your add-on scripts and configuration files -COPY run.sh /run.sh -RUN chmod +x /run.sh - -CMD [ "/run.sh" ] +COPY rootfs / +RUN chmod +x /etc/services.d/actrunner/* # Labels LABEL \ diff --git a/gitea_act_runner/rootfs/etc/services.d/actrunner/finish b/gitea_act_runner/rootfs/etc/services.d/actrunner/finish new file mode 100644 index 0000000..75cbc4e --- /dev/null +++ b/gitea_act_runner/rootfs/etc/services.d/actrunner/finish @@ -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" diff --git a/gitea_act_runner/rootfs/etc/services.d/actrunner/run b/gitea_act_runner/rootfs/etc/services.d/actrunner/run new file mode 100644 index 0000000..fd9d7c6 --- /dev/null +++ b/gitea_act_runner/rootfs/etc/services.d/actrunner/run @@ -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