fix: show commit SHA in startup banners
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
*.sh text eol=lf
|
||||
deploy/docker/frontend/*.sh text eol=lf
|
||||
@@ -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,
|
||||
|
||||
@@ -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 \
|
||||
|
||||
@@ -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 <<EOF
|
||||
|
||||
@@ -14,6 +19,7 @@ cat <<EOF
|
||||
|
||||
container :: FRONTEND
|
||||
image tag :: ${IMAGE_TAG:-local}
|
||||
commit :: ${BUILD_COMMIT}
|
||||
listen :: :80
|
||||
published :: ${PUBLISHED}
|
||||
upstream :: backend:8081
|
||||
|
||||
@@ -22,6 +22,7 @@ class StartupBannerTests(unittest.TestCase):
|
||||
service,
|
||||
{
|
||||
"IMAGE_TAG": "test-tag",
|
||||
"REMNAWAVE_MINISHOP_COMMIT": "abc1234",
|
||||
"POSTGRES_HOST": "postgres",
|
||||
"POSTGRES_DB": "postgres",
|
||||
"REDIS_URL": "redis://redis:6379/0",
|
||||
@@ -29,6 +30,7 @@ class StartupBannerTests(unittest.TestCase):
|
||||
)
|
||||
self.assertIn(f"container :: {service.upper()}", output)
|
||||
self.assertIn("image tag :: test-tag", output)
|
||||
self.assertIn("commit :: abc1234", output)
|
||||
self.assertIn("remnawave-minishop", output)
|
||||
self.assertIn("███", output)
|
||||
self.assertNotIn("в", output)
|
||||
|
||||
Reference in New Issue
Block a user