diff --git a/gitea/Dockerfile b/gitea/Dockerfile index 985a2b5fe..d2121fca8 100644 --- a/gitea/Dockerfile +++ b/gitea/Dockerfile @@ -31,17 +31,37 @@ ENV S6_CMD_WAIT_FOR_SERVICES=1 \ # 3 Install apps # ################## +# Add rootfs +COPY rootfs/ / + +RUN if ! command -v bash >/dev/null 2>/dev/null; then (apt-get update && apt-get install -yqq --no-install-recommends bash || apk add --no-cache bash) >/dev/null; fi \ + && if ! command -v curl >/dev/null 2>/dev/null; then (apt-get update && apt-get install -yqq --no-install-recommends curl || apk add --no-cache curl) >/dev/null; fi \ + && apt-get update && apt-get install -yqq --no-install-recommends ca-certificates || apk add --no-cache ca-certificates >/dev/null || true \ + && mkdir -p /etc/cont-init.d \ + && for scripts in $MODULES; do echo "$scripts" && curl -f -L -s -S "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/$scripts" -o /etc/cont-init.d/"$scripts" && [ "$(sed -n '/\/bin/p;q' /etc/cont-init.d/"$scripts")" != "" ] || (echo "script failed to install $scripts" && exit 1); done \ + && chmod -R 755 /etc/cont-init.d || printf '%s\n' "${MODULES}" >/MODULESFILE + +# Manual apps +ENV PACKAGES="" + +# Automatic apps & bashio +RUN if ! command -v bash >/dev/null 2>/dev/null; then (apt-get update && apt-get install -yqq --no-install-recommends bash || apk add --no-cache bash) >/dev/null; fi \ + && if ! command -v curl >/dev/null 2>/dev/null; then (apt-get update && apt-get install -yqq --no-install-recommends curl || apk add --no-cache curl) >/dev/null; fi \ + && curl -f -L -s -S "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/automatic_packages.sh" --output /automatic_packages.sh \ + && chmod 777 /automatic_packages.sh \ + && eval /./automatic_packages.sh "${PACKAGES:-}" \ + && rm /automatic_packages.sh || (printf '%s\n' "${PACKAGES:-}" > /ENVFILE; \ + if [ -f /etc/s6-overlay/s6-rc.d/init-migrations/run ]; then chmod +x /etc/cont-init.d/00-aaa_dockerfile_backup.sh && sed -i "1a /./etc/cont-init.d/00-aaa_dockerfile_backup.sh" /etc/s6-overlay/s6-rc.d/init-migrations/run;fi) + + EXPOSE 22 3000 ################ # 4 Entrypoint # ################ -#RUN chmod 777 /entrypoint.sh -#WORKDIR / -#ENTRYPOINT [ "/usr/bin/env" ] -#CMD [ "/entrypoint.sh" ] -#SHELL ["/bin/bash", "-o", "pipefail", "-c"] +RUN chmod 777 /entrypoint.sh +ENTRYPOINT [ "/entrypoint.sh" ] ############ # 5 Labels # @@ -71,4 +91,4 @@ LABEL \ 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} \ No newline at end of file + org.opencontainers.image.version=${BUILD_VERSION} diff --git a/gitea/config.json b/gitea/config.json index 6cb635402..d9730f44e 100644 --- a/gitea/config.json +++ b/gitea/config.json @@ -5,7 +5,6 @@ ], "codenotary": "alexandrep.github@gmail.com", "description": "Gitea for Home Assistant", - "image": "ghcr.io/alexbelgium/gitea-{arch}", "init": false, "map": [ "share:rw", @@ -15,7 +14,10 @@ "options": { "certfile": "fullchain.pem", "keyfile": "privkey.pem", - "ssl": false + "ssl": false, + "SITE_TITLE": "Gitea: Git with a cup of tea", + "SERVER_DOMAIN": "localhost", + "BASE_URL": "http://localhost:3000/" }, "ports": { "22/tcp": 2222, @@ -23,15 +25,18 @@ }, "ports_description": { "22/tcp": "Ssh", - "3000/tcp": "Http web interface" + "3000/tcp": "Web interface" }, "schema": { "certfile": "str", "keyfile": "str", - "ssl": "bool" + "ssl": "bool", + "SITE_TITLE": "str", + "SERVER_DOMAIN": "str", + "BASE_URL": "str" }, "slug": "gitea", - "url": "https://github.com/alexbelgium/hassio-addons/tree/master/gitea", - "version": "1.17.2", + "url": "https://github.com/baldarn/hassio-addons/tree/master/gitea", + "version": "1.17.2-1", "webui": "[PROTO:ssl]://[HOST]:[PORT:3000]" } diff --git a/gitea/rootfs/entrypoint.sh b/gitea/rootfs/entrypoint.sh new file mode 100644 index 000000000..85d8a9212 --- /dev/null +++ b/gitea/rootfs/entrypoint.sh @@ -0,0 +1,27 @@ +#!/bin/bash +echo "Starting..." + +############################ +# Backup Dockerfile Script # +############################ + +if [ -f /etc/cont-init.d/00-aaa_dockerfile_backup.sh ]; then + chown "$(id -u)":"$(id -g)" /etc/cont-init.d/00-aaa_dockerfile_backup.sh + chmod +x /etc/cont-init.d/00-aaa_dockerfile_backup.sh + /./etc/cont-init.d/00-aaa_dockerfile_backup.sh + rm /etc/cont-init.d/00-aaa_dockerfile_backup.sh +fi + +#################### +# Starting scripts # +#################### + +for SCRIPTS in /etc/cont-init.d/*; do + [ -e "$SCRIPTS" ] || continue + echo "$SCRIPTS: executing" + chown "$(id -u)":"$(id -g)" "$SCRIPTS" + chmod a+x "$SCRIPTS" + # Change shebang if no s6 supervision + sed -i 's|/usr/bin/with-contenv bashio|/usr/bin/env bashio|g' "$SCRIPTS" + /."$SCRIPTS" || echo "$SCRIPTS: exiting $?" +done diff --git a/gitea/rootfs/etc/cont-init.d/00-aaa_dockerfile_backup.sh b/gitea/rootfs/etc/cont-init.d/00-aaa_dockerfile_backup.sh new file mode 100644 index 000000000..b983e4efc --- /dev/null +++ b/gitea/rootfs/etc/cont-init.d/00-aaa_dockerfile_backup.sh @@ -0,0 +1,50 @@ +#!/bin/bash + +# If dockerfile failed install manually + +############################## +# Automatic modules download # +############################## +if [ -e "/MODULESFILE" ]; then + MODULES=$(/dev/null 2>/dev/null; then (apt-get update && apt-get install -yqq --no-install-recommends bash || apk add --no-cache bash) >/dev/null; fi \ + && if ! command -v curl >/dev/null 2>/dev/null; then (apt-get update && apt-get install -yqq --no-install-recommends curl || apk add --no-cache curl) >/dev/null; fi \ + && apt-get update && apt-get install -yqq --no-install-recommends ca-certificates || apk add --no-cache ca-certificates >/dev/null || true \ + && mkdir -p /etc/cont-init.d \ + && for scripts in $MODULES; do echo "$scripts" && curl -f -L -s -S "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/$scripts" -o /etc/cont-init.d/"$scripts" && [ "$(sed -n '/\/bin/p;q' /etc/cont-init.d/"$scripts")" != "" ] || (echo "script failed to install $scripts" && exit 1); done \ + && chmod -R 755 /etc/cont-init.d +fi + +####################### +# Automatic installer # +####################### +if [ -e "/ENVFILE" ]; then + PACKAGES=$(/dev/null 2>/dev/null; then (apt-get update && apt-get install -yqq --no-install-recommends bash || apk add --no-cache bash) >/dev/null; fi \ + && if ! command -v curl >/dev/null 2>/dev/null; then (apt-get update && apt-get install -yqq --no-install-recommends curl || apk add --no-cache curl) >/dev/null; fi \ + && curl -f -L -s -S "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/automatic_packages.sh" --output /automatic_packages.sh \ + && chmod 777 /automatic_packages.sh \ + && eval /./automatic_packages.sh "${PACKAGES:-}" \ + && rm /automatic_packages.sh +fi + +if [ -e "/MODULESFILE" ] && [ ! -f /entrypoint.sh ]; then + for scripts in $MODULES; do + echo "$scripts : executing" + chown "$(id -u)":"$(id -g)" /etc/cont-init.d/"$scripts" + chmod a+x /etc/cont-init.d/"$scripts" + /./etc/cont-init.d/"$scripts" || echo "/etc/cont-init.d/$scripts: exiting $?" + rm /etc/cont-init.d/"$scripts" + done | tac +fi + +####################### +# Correct permissions # +####################### +[ -d /etc/services.d ] && chmod -R 777 /etc/services.d +[ -d /etc/cont-init.d ] && chmod -R 777 /etc/cont-init.d diff --git a/gitea/rootfs/etc/cont-init.d/99-run.sh b/gitea/rootfs/etc/cont-init.d/99-run.sh new file mode 100644 index 000000000..9aaa4e3bc --- /dev/null +++ b/gitea/rootfs/etc/cont-init.d/99-run.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bashio +# shellcheck shell=bash + +SITE_TITLE=$(bashio::config 'SITE_TITLE') +SERVER_DOMAIN=$(bashio::config 'SERVER_DOMAIN') +BASE_URL=$(bashio::config 'BASE_URL') + +echo "site tile $SITE_TITLE" +echo "server domain $SERVER_DOMAIN" +echo "base url $BASE_URL" + +# sed "s/^APP.*/APP = $SITE_TITLE/" /data/gitea/conf/app.ini +# sed "s/^DOMAIN.*/DOMAIN = $SERVER_DOMAIN/" /data/gitea/conf/app.ini +# sed "s/^ROOT_URL.*/ROOT_URL = $BASE_URL/" /data/gitea/conf/app.ini + +exec "$@"