diff --git a/backend/startup_banner.py b/backend/startup_banner.py index ded408a..d097dc1 100644 --- a/backend/startup_banner.py +++ b/backend/startup_banner.py @@ -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}", ] diff --git a/deploy/docker/Dockerfile b/deploy/docker/Dockerfile index 0b2e511..090bb62 100644 --- a/deploy/docker/Dockerfile +++ b/deploy/docker/Dockerfile @@ -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 diff --git a/deploy/docker/frontend/00-startup-banner.sh b/deploy/docker/frontend/00-startup-banner.sh index fa810dd..69cb685 100644 --- a/deploy/docker/frontend/00-startup-banner.sh +++ b/deploy/docker/frontend/00-startup-banner.sh @@ -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 <