fix: include git tag context in startup banners
This commit is contained in:
@@ -24,16 +24,44 @@ def _env(name: str, default: str = "-") -> str:
|
||||
return os.getenv(name) or default
|
||||
|
||||
|
||||
def _build_file(name: str, default: str = "-") -> str:
|
||||
try:
|
||||
value = (_APP_ROOT / name).read_text(encoding="utf-8").strip()
|
||||
except OSError:
|
||||
return default
|
||||
return value 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 "-"
|
||||
return _build_file(".build-commit")[:40] or "-"
|
||||
|
||||
|
||||
def _build_tag() -> str:
|
||||
for env_name in ("REMNAWAVE_MINISHOP_TAG", "GIT_TAG", "BUILD_TAG"):
|
||||
value = os.getenv(env_name)
|
||||
if value:
|
||||
return value.strip()[:40] or "-"
|
||||
return _build_file(".build-tag")[:40] or "-"
|
||||
|
||||
|
||||
def _image_tag_display(image_tag: str) -> str:
|
||||
normalized = image_tag.lower()
|
||||
build_tag = _build_tag()
|
||||
build_commit = _build_commit()
|
||||
if normalized == "latest" and build_tag != "-":
|
||||
return f"latest-{build_tag}"
|
||||
if normalized == "dev":
|
||||
if build_tag != "-" and build_commit != "-":
|
||||
return f"dev-{build_tag}+{build_commit}"
|
||||
if build_tag != "-":
|
||||
return f"dev-{build_tag}"
|
||||
if build_commit != "-":
|
||||
return f"dev+{build_commit}"
|
||||
return image_tag
|
||||
|
||||
|
||||
def _bool_env(name: str) -> str:
|
||||
@@ -70,7 +98,7 @@ 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"image tag :: {_image_tag_display(image_tag)}",
|
||||
f"commit :: {_build_commit()}",
|
||||
f"log level :: {log_level}",
|
||||
]
|
||||
|
||||
@@ -28,6 +28,7 @@ RUN set -eu; \
|
||||
fi; \
|
||||
if [ -n "$dirty" ]; then version="${version}-dirty"; fi; \
|
||||
printf '%s' "$version" > /build-version; \
|
||||
printf '%s' "${tag:-unknown}" > /build-tag; \
|
||||
printf '%s' "${sha:-unknown}" > /build-commit
|
||||
|
||||
|
||||
@@ -49,6 +50,7 @@ COPY backend ./backend
|
||||
COPY locales ./locales
|
||||
COPY data ./data
|
||||
COPY --from=version-builder /build-version /app/.build-version
|
||||
COPY --from=version-builder /build-tag /app/.build-tag
|
||||
COPY --from=version-builder /build-commit /app/.build-commit
|
||||
RUN mkdir -p /app/logs /app/data && chown -R appuser:appuser /app/logs /app/data
|
||||
|
||||
@@ -99,6 +101,7 @@ 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-tag /build-tag
|
||||
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
|
||||
|
||||
@@ -1,10 +1,28 @@
|
||||
#!/bin/sh
|
||||
PUBLISHED="${FRONTEND_PUBLIC:-127.0.0.1:${FRONTEND_PORT:-8082}->80}"
|
||||
IMAGE_TAG_VALUE="${IMAGE_TAG:-local}"
|
||||
BUILD_TAG="${REMNAWAVE_MINISHOP_TAG:-${GIT_TAG:-${BUILD_TAG:-}}}"
|
||||
if [ -z "$BUILD_TAG" ] && [ -r /build-tag ]; then
|
||||
BUILD_TAG="$(cat /build-tag)"
|
||||
fi
|
||||
BUILD_TAG="${BUILD_TAG:-unknown}"
|
||||
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}"
|
||||
DISPLAY_IMAGE_TAG="$IMAGE_TAG_VALUE"
|
||||
if [ "$IMAGE_TAG_VALUE" = "latest" ] && [ "$BUILD_TAG" != "unknown" ]; then
|
||||
DISPLAY_IMAGE_TAG="latest-${BUILD_TAG}"
|
||||
elif [ "$IMAGE_TAG_VALUE" = "dev" ]; then
|
||||
if [ "$BUILD_TAG" != "unknown" ] && [ "$BUILD_COMMIT" != "unknown" ]; then
|
||||
DISPLAY_IMAGE_TAG="dev-${BUILD_TAG}+${BUILD_COMMIT}"
|
||||
elif [ "$BUILD_TAG" != "unknown" ]; then
|
||||
DISPLAY_IMAGE_TAG="dev-${BUILD_TAG}"
|
||||
elif [ "$BUILD_COMMIT" != "unknown" ]; then
|
||||
DISPLAY_IMAGE_TAG="dev+${BUILD_COMMIT}"
|
||||
fi
|
||||
fi
|
||||
|
||||
cat <<EOF
|
||||
|
||||
@@ -18,7 +36,7 @@ cat <<EOF
|
||||
╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝╚═╝╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚═╝
|
||||
|
||||
container :: FRONTEND
|
||||
image tag :: ${IMAGE_TAG:-local}
|
||||
image tag :: ${DISPLAY_IMAGE_TAG}
|
||||
commit :: ${BUILD_COMMIT}
|
||||
listen :: :80
|
||||
published :: ${PUBLISHED}
|
||||
|
||||
@@ -22,6 +22,7 @@ class StartupBannerTests(unittest.TestCase):
|
||||
service,
|
||||
{
|
||||
"IMAGE_TAG": "test-tag",
|
||||
"REMNAWAVE_MINISHOP_TAG": "v3.4.0",
|
||||
"REMNAWAVE_MINISHOP_COMMIT": "abc1234",
|
||||
"POSTGRES_HOST": "postgres",
|
||||
"POSTGRES_DB": "postgres",
|
||||
@@ -35,6 +36,27 @@ class StartupBannerTests(unittest.TestCase):
|
||||
self.assertIn("███", output)
|
||||
self.assertNotIn("в", output)
|
||||
|
||||
def test_startup_banner_expands_latest_and_dev_tags(self):
|
||||
latest_output = _render(
|
||||
"backend",
|
||||
{
|
||||
"IMAGE_TAG": "latest",
|
||||
"REMNAWAVE_MINISHOP_TAG": "v3.4.0",
|
||||
"REMNAWAVE_MINISHOP_COMMIT": "abc1234",
|
||||
},
|
||||
)
|
||||
self.assertIn("image tag :: latest-v3.4.0", latest_output)
|
||||
|
||||
dev_output = _render(
|
||||
"backend",
|
||||
{
|
||||
"IMAGE_TAG": "dev",
|
||||
"REMNAWAVE_MINISHOP_TAG": "v3.4.0",
|
||||
"REMNAWAVE_MINISHOP_COMMIT": "abc1234",
|
||||
},
|
||||
)
|
||||
self.assertIn("image tag :: dev-v3.4.0+abc1234", dev_output)
|
||||
|
||||
|
||||
class StartupBannerServiceDetailsTests(unittest.TestCase):
|
||||
def test_backend_lists_ports_postgres_and_redis(self):
|
||||
|
||||
Reference in New Issue
Block a user