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
|
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:
|
def _build_commit() -> str:
|
||||||
for env_name in ("REMNAWAVE_MINISHOP_COMMIT", "GIT_COMMIT", "COMMIT_SHA"):
|
for env_name in ("REMNAWAVE_MINISHOP_COMMIT", "GIT_COMMIT", "COMMIT_SHA"):
|
||||||
value = os.getenv(env_name)
|
value = os.getenv(env_name)
|
||||||
if value:
|
if value:
|
||||||
return value.strip()[:40] or "-"
|
return value.strip()[:40] or "-"
|
||||||
try:
|
return _build_file(".build-commit")[:40] or "-"
|
||||||
value = (_APP_ROOT / ".build-commit").read_text(encoding="utf-8").strip()
|
|
||||||
except OSError:
|
|
||||||
return "-"
|
def _build_tag() -> str:
|
||||||
return value[:40] or "-"
|
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:
|
def _bool_env(name: str) -> str:
|
||||||
@@ -70,7 +98,7 @@ def _service_details(service: str) -> str:
|
|||||||
image_tag = _env("IMAGE_TAG", "local")
|
image_tag = _env("IMAGE_TAG", "local")
|
||||||
log_level = _env("LOG_LEVEL", "INFO")
|
log_level = _env("LOG_LEVEL", "INFO")
|
||||||
common = [
|
common = [
|
||||||
f"image tag :: {image_tag}",
|
f"image tag :: {_image_tag_display(image_tag)}",
|
||||||
f"commit :: {_build_commit()}",
|
f"commit :: {_build_commit()}",
|
||||||
f"log level :: {log_level}",
|
f"log level :: {log_level}",
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ RUN set -eu; \
|
|||||||
fi; \
|
fi; \
|
||||||
if [ -n "$dirty" ]; then version="${version}-dirty"; fi; \
|
if [ -n "$dirty" ]; then version="${version}-dirty"; fi; \
|
||||||
printf '%s' "$version" > /build-version; \
|
printf '%s' "$version" > /build-version; \
|
||||||
|
printf '%s' "${tag:-unknown}" > /build-tag; \
|
||||||
printf '%s' "${sha:-unknown}" > /build-commit
|
printf '%s' "${sha:-unknown}" > /build-commit
|
||||||
|
|
||||||
|
|
||||||
@@ -49,6 +50,7 @@ COPY backend ./backend
|
|||||||
COPY locales ./locales
|
COPY locales ./locales
|
||||||
COPY data ./data
|
COPY data ./data
|
||||||
COPY --from=version-builder /build-version /app/.build-version
|
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
|
COPY --from=version-builder /build-commit /app/.build-commit
|
||||||
RUN mkdir -p /app/logs /app/data && chown -R appuser:appuser /app/logs /app/data
|
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/nginx.conf /etc/nginx/conf.d/default.conf
|
||||||
COPY deploy/docker/frontend/00-startup-banner.sh /docker-entrypoint.d/00-startup-banner.sh
|
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 --from=version-builder /build-commit /build-commit
|
||||||
COPY backend/bot/app/web/templates/subscription_webapp.html /usr/share/nginx/html/index.html
|
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.css /usr/share/nginx/html/subscription_webapp.css
|
||||||
|
|||||||
@@ -1,10 +1,28 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
PUBLISHED="${FRONTEND_PUBLIC:-127.0.0.1:${FRONTEND_PORT:-8082}->80}"
|
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:-}}}"
|
BUILD_COMMIT="${REMNAWAVE_MINISHOP_COMMIT:-${GIT_COMMIT:-${COMMIT_SHA:-}}}"
|
||||||
if [ -z "$BUILD_COMMIT" ] && [ -r /build-commit ]; then
|
if [ -z "$BUILD_COMMIT" ] && [ -r /build-commit ]; then
|
||||||
BUILD_COMMIT="$(cat /build-commit)"
|
BUILD_COMMIT="$(cat /build-commit)"
|
||||||
fi
|
fi
|
||||||
BUILD_COMMIT="${BUILD_COMMIT:-unknown}"
|
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
|
cat <<EOF
|
||||||
|
|
||||||
@@ -18,7 +36,7 @@ cat <<EOF
|
|||||||
╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝╚═╝╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚═╝
|
╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝╚═╝╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚═╝
|
||||||
|
|
||||||
container :: FRONTEND
|
container :: FRONTEND
|
||||||
image tag :: ${IMAGE_TAG:-local}
|
image tag :: ${DISPLAY_IMAGE_TAG}
|
||||||
commit :: ${BUILD_COMMIT}
|
commit :: ${BUILD_COMMIT}
|
||||||
listen :: :80
|
listen :: :80
|
||||||
published :: ${PUBLISHED}
|
published :: ${PUBLISHED}
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ class StartupBannerTests(unittest.TestCase):
|
|||||||
service,
|
service,
|
||||||
{
|
{
|
||||||
"IMAGE_TAG": "test-tag",
|
"IMAGE_TAG": "test-tag",
|
||||||
|
"REMNAWAVE_MINISHOP_TAG": "v3.4.0",
|
||||||
"REMNAWAVE_MINISHOP_COMMIT": "abc1234",
|
"REMNAWAVE_MINISHOP_COMMIT": "abc1234",
|
||||||
"POSTGRES_HOST": "postgres",
|
"POSTGRES_HOST": "postgres",
|
||||||
"POSTGRES_DB": "postgres",
|
"POSTGRES_DB": "postgres",
|
||||||
@@ -35,6 +36,27 @@ class StartupBannerTests(unittest.TestCase):
|
|||||||
self.assertIn("███", output)
|
self.assertIn("███", output)
|
||||||
self.assertNotIn("в", 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):
|
class StartupBannerServiceDetailsTests(unittest.TestCase):
|
||||||
def test_backend_lists_ports_postgres_and_redis(self):
|
def test_backend_lists_ports_postgres_and_redis(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user