From e2038085ca8c789548cdf4998f973d61a277dda0 Mon Sep 17 00:00:00 2001 From: 3252a8 <3252a8@proton.me> Date: Sun, 17 May 2026 22:11:17 +0300 Subject: [PATCH] fix: show commit SHA in startup banners --- .gitattributes | 2 ++ backend/startup_banner.py | 20 +++++++++++++++++++- deploy/docker/Dockerfile | 6 +++++- deploy/docker/frontend/00-startup-banner.sh | 6 ++++++ tests/test_startup_banner.py | 2 ++ 5 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..466d9f0 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +*.sh text eol=lf +deploy/docker/frontend/*.sh text eol=lf diff --git a/backend/startup_banner.py b/backend/startup_banner.py index a7ab6da..ded408a 100644 --- a/backend/startup_banner.py +++ b/backend/startup_banner.py @@ -1,5 +1,6 @@ import os import sys +from pathlib import Path from urllib.parse import urlsplit _BANNER_TEMPLATE = """ @@ -16,12 +17,25 @@ _BANNER_TEMPLATE = """ {details} https://github.com/3252a8/remnawave-minishop """ +_APP_ROOT = Path(__file__).resolve().parents[1] def _env(name: str, default: str = "-") -> str: return os.getenv(name) or default +def _build_commit() -> str: + for env_name in ("REMNAWAVE_MINISHOP_COMMIT", "GIT_COMMIT", "COMMIT_SHA"): + value = os.getenv(env_name) + if value: + return value.strip()[:40] or "-" + try: + value = (_APP_ROOT / ".build-commit").read_text(encoding="utf-8").strip() + except OSError: + return "-" + return value[:40] or "-" + + def _bool_env(name: str) -> str: value = _env(name, "").lower() if value in {"1", "true", "yes", "on"}: @@ -55,7 +69,11 @@ def _detail_line(text: str) -> str: def _service_details(service: str) -> str: image_tag = _env("IMAGE_TAG", "local") log_level = _env("LOG_LEVEL", "INFO") - common = [f"image tag :: {image_tag}", f"log level :: {log_level}"] + common = [ + f"image tag :: {image_tag}", + f"commit :: {_build_commit()}", + f"log level :: {log_level}", + ] if service == "backend": lines = [ *common, diff --git a/deploy/docker/Dockerfile b/deploy/docker/Dockerfile index 02ef2fa..0b2e511 100644 --- a/deploy/docker/Dockerfile +++ b/deploy/docker/Dockerfile @@ -27,7 +27,8 @@ RUN set -eu; \ version="dev+unknown"; \ fi; \ if [ -n "$dirty" ]; then version="${version}-dirty"; fi; \ - printf '%s' "$version" > /build-version + printf '%s' "$version" > /build-version; \ + printf '%s' "${sha:-unknown}" > /build-commit FROM python:3.12-slim AS python-base @@ -48,6 +49,7 @@ COPY backend ./backend COPY locales ./locales COPY data ./data COPY --from=version-builder /build-version /app/.build-version +COPY --from=version-builder /build-commit /app/.build-commit RUN mkdir -p /app/logs /app/data && chown -R appuser:appuser /app/logs /app/data USER appuser @@ -97,12 +99,14 @@ LABEL org.opencontainers.image.source="https://github.com/3252a8/remnawave-minis COPY deploy/docker/frontend/nginx.conf /etc/nginx/conf.d/default.conf COPY deploy/docker/frontend/00-startup-banner.sh /docker-entrypoint.d/00-startup-banner.sh +COPY --from=version-builder /build-commit /build-commit COPY backend/bot/app/web/templates/subscription_webapp.html /usr/share/nginx/html/index.html COPY --from=frontend-builder /app/backend/bot/app/web/templates/subscription_webapp.css /usr/share/nginx/html/subscription_webapp.css COPY --from=frontend-builder /app/backend/bot/app/web/templates/subscription_webapp.js /usr/share/nginx/html/subscription_webapp.js COPY --from=frontend-builder /app/backend/bot/app/web/templates/subscription_webapp.min.*.js /usr/share/nginx/html/ RUN set -eu; \ + find /docker-entrypoint.d -type f -name '*.sh' -exec sed -i 's/\r$//' {} +; \ HASHED=$(ls /usr/share/nginx/html/subscription_webapp.min.*.js 2>/dev/null | sort | tail -n1 | xargs -n1 basename || true); \ JS_NAME="${HASHED:-subscription_webapp.js}"; \ sed -i \ diff --git a/deploy/docker/frontend/00-startup-banner.sh b/deploy/docker/frontend/00-startup-banner.sh index 4cc58f9..fa810dd 100644 --- a/deploy/docker/frontend/00-startup-banner.sh +++ b/deploy/docker/frontend/00-startup-banner.sh @@ -1,5 +1,10 @@ #!/bin/sh PUBLISHED="${FRONTEND_PUBLIC:-127.0.0.1:${FRONTEND_PORT:-8082}->80}" +BUILD_COMMIT="${REMNAWAVE_MINISHOP_COMMIT:-${GIT_COMMIT:-${COMMIT_SHA:-}}}" +if [ -z "$BUILD_COMMIT" ] && [ -r /build-commit ]; then + BUILD_COMMIT="$(cat /build-commit)" +fi +BUILD_COMMIT="${BUILD_COMMIT:-unknown}" cat <