From 90a31d4ecc3be63a1363c02c03c8933f4760da09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Percy=20Camilo=20Trive=C3=B1o=20Aucahuasi?= Date: Sun, 23 Nov 2025 10:55:06 -0500 Subject: [PATCH 1/2] Update to CUDA 13.0 and fix logging initialization error - Upgrade base image from v2.43.0-12.8 to v2.50.0-13.0 - Update CI workflows to build CUDA 13.0 and 12.9 versions - Change conda environment activation from rapids to base - Fix AttributeError when LOG_LEVEL=TRACE by mapping unsupported log levels (TRACE, VERBOSE) to DEBUG with stderr warning --- .github/workflows/ci.yml | 2 +- .github/workflows/dockerhubpublish.yml | 2 +- .github/workflows/scan.yml | 4 ++-- .../scripts/graphistry-service-account.sh | 2 +- src/docker/Dockerfile | 4 ++-- src/docker/docker-compose.yml | 6 +++--- src/docker/entrypoint.sh | 2 +- src/docker/override/docker-compose.override.yml | 2 +- src/python/util/log.py | 13 ++++++++++++- 9 files changed, 24 insertions(+), 13 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a57cdac..d315f75 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -222,6 +222,6 @@ jobs: env: COMPOSE_DOCKER_CLI_BUILD: 1 DOCKER_BUILDKIT: 1 - GRAPHISTRY_FORGE_BASE_VERSION: v${{ env.RELEASE_VERSION }}-12.8 + GRAPHISTRY_FORGE_BASE_VERSION: v${{ env.RELEASE_VERSION }}-13.0 run: | cd src/docker && ./${{ matrix.flavor }} build diff --git a/.github/workflows/dockerhubpublish.yml b/.github/workflows/dockerhubpublish.yml index 1b80825..5aab5dd 100644 --- a/.github/workflows/dockerhubpublish.yml +++ b/.github/workflows/dockerhubpublish.yml @@ -18,7 +18,7 @@ jobs: runs-on: ubuntu-latest-4-cores strategy: matrix: - CUDA_SHORT_VERSION: ['12.8', '11.8'] + CUDA_SHORT_VERSION: ['13.0', '12.9'] fail-fast: true diff --git a/.github/workflows/scan.yml b/.github/workflows/scan.yml index 5f78e34..35f9bad 100644 --- a/.github/workflows/scan.yml +++ b/.github/workflows/scan.yml @@ -31,7 +31,7 @@ jobs: DOCKER_BUILDKIT: 1 strategy: matrix: - CUDA_SHORT_VERSION: ['12.8'] + CUDA_SHORT_VERSION: ['13.0'] steps: - name: checkout @@ -94,7 +94,7 @@ jobs: DOCKER_BUILDKIT: 1 strategy: matrix: - CUDA_SHORT_VERSION: ['12.8'] + CUDA_SHORT_VERSION: ['13.0'] steps: - name: checkout diff --git a/src/bootstraps/scripts/graphistry-service-account.sh b/src/bootstraps/scripts/graphistry-service-account.sh index ce272fa..1e7332d 100755 --- a/src/bootstraps/scripts/graphistry-service-account.sh +++ b/src/bootstraps/scripts/graphistry-service-account.sh @@ -26,7 +26,7 @@ POST_SCRIPT="CELERY_BROKER_URL=zz python manage.py shell && echo done || { echo cd "${GRAPHISTRY_HOME}" \ && docker-compose exec -T nexus \ bash -c \ - "source activate rapids && echo \"${ADD_USER_SCRIPT}; ${VERIFY_USER_SCRIPT}\" | ${POST_SCRIPT}" \ + "source activate base && echo \"${ADD_USER_SCRIPT}; ${VERIFY_USER_SCRIPT}\" | ${POST_SCRIPT}" \ ) ./hello-end.sh "$SCRIPT" \ No newline at end of file diff --git a/src/docker/Dockerfile b/src/docker/Dockerfile index cfd4084..d9f6107 100644 --- a/src/docker/Dockerfile +++ b/src/docker/Dockerfile @@ -1,12 +1,12 @@ # Default to big image, but allow thin cpu override ARG DOCKER_TAG=latest -ARG GRAPHISTRY_FORGE_BASE_VERSION=v2.43.0-12.8 +ARG GRAPHISTRY_FORGE_BASE_VERSION=v2.50.0-13.0 ARG PYTHON_VERSION=3.10 ARG BASE_IMAGE=graphistry/graphistry-forge-base:${GRAPHISTRY_FORGE_BASE_VERSION} FROM python:$PYTHON_VERSION as cpu_base ARG DOCKER_TAG=latest -ARG GRAPHISTRY_FORGE_BASE_VERSION=v2.43.0-12.8 +ARG GRAPHISTRY_FORGE_BASE_VERSION=v2.50.0-13.0 ARG BASE_IMAGE=graphistry/graphistry-forge-base:${GRAPHISTRY_FORGE_BASE_VERSION} FROM $BASE_IMAGE diff --git a/src/docker/docker-compose.yml b/src/docker/docker-compose.yml index 4868879..6f4b702 100644 --- a/src/docker/docker-compose.yml +++ b/src/docker/docker-compose.yml @@ -56,7 +56,7 @@ x-build-kwargs: args: - DOCKER_TAG=${DOCKER_TAG:-latest} - BUILDKIT_INLINE_CACHE=1 - - GRAPHISTRY_FORGE_BASE_VERSION=${GRAPHISTRY_FORGE_BASE_VERSION:-v2.43.0-12.8} + - GRAPHISTRY_FORGE_BASE_VERSION=${GRAPHISTRY_FORGE_BASE_VERSION:-v2.50.0-13.0} ############################################################ ## @@ -70,14 +70,14 @@ services: environment: PYTHONPATH: "/opt/py_env" PIP_TARGET: "/opt/py_env" - image: graphistry/graph-app-kit-st:${DOCKER_TAG:-latest}-${CUDA_SHORT_VERSION:-12.8} + image: graphistry/graph-app-kit-st:${DOCKER_TAG:-latest}-${CUDA_SHORT_VERSION:-13.0} command: --server.baseUrlPath="$BASE_PATH" /apps/entrypoint.py build: <<: *build_kwargs context: .. dockerfile: ./docker/Dockerfile cache_from: - - graphistry/graph-app-kit-st:${DOCKER_TAG:-latest}-${CUDA_SHORT_VERSION:-12.8} + - graphistry/graph-app-kit-st:${DOCKER_TAG:-latest}-${CUDA_SHORT_VERSION:-13.0} ports: - "${ST_PUBLIC_PORT:-8501}:8501" volumes: diff --git a/src/docker/entrypoint.sh b/src/docker/entrypoint.sh index 4755478..6b31e82 100755 --- a/src/docker/entrypoint.sh +++ b/src/docker/entrypoint.sh @@ -41,5 +41,5 @@ if [ -v ST_LOG_LEVEL ]; then PASS_LOG_LEVEL="--logger.level=${ST_LOG_LEVEL}" fi -{ source activate rapids || echo ok ; } \ +{ source activate base || echo ok ; } \ && echo "pwd: `pwd`" && find . && streamlit run "$@" "${PASS_LOG_LEVEL}" diff --git a/src/docker/override/docker-compose.override.yml b/src/docker/override/docker-compose.override.yml index f3164c2..b7f09e3 100644 --- a/src/docker/override/docker-compose.override.yml +++ b/src/docker/override/docker-compose.override.yml @@ -54,7 +54,7 @@ services: args: - DOCKER_TAG=${DOCKER_TAG:-latest} - BUILDKIT_INLINE_CACHE=1 - - GRAPHISTRY_FORGE_BASE_VERSION=${GRAPHISTRY_FORGE_BASE_VERSION:-v2.43.0-12.8} + - GRAPHISTRY_FORGE_BASE_VERSION=${GRAPHISTRY_FORGE_BASE_VERSION:-v2.50.0-13.0} context: .. dockerfile: ./docker/Dockerfile cache_from: diff --git a/src/python/util/log.py b/src/python/util/log.py index 86c3ef1..fc41110 100644 --- a/src/python/util/log.py +++ b/src/python/util/log.py @@ -1,5 +1,6 @@ import logging import os +import sys # logging.basicConfig(format="%(levelname)s %(asctime)s %(name)s:%(message)s\n") logging.basicConfig(format="%(levelname)s %(asctime)s %(name)s:%(message)s\n") @@ -9,7 +10,17 @@ def getChild(*args, **kwargs): logger = logging.getLogger('gak') log_level_str = os.environ.get('LOG_LEVEL', 'ERROR').upper() - log_level = getattr(logging, log_level_str) + # Handle non-standard log levels gracefully + try: + log_level = getattr(logging, log_level_str) + except AttributeError: + # Map non-standard levels to closest standard level + level_mapping = { + 'TRACE': logging.DEBUG, + 'VERBOSE': logging.DEBUG, + } + log_level = level_mapping.get(log_level_str, logging.ERROR) + sys.stderr.write(f"Log level '{log_level_str}' not supported, mapping to {logging.getLevelName(log_level)}\n") logger.debug(f"util.log log_level == {log_level_str} ({log_level})") out=logger.getChild(*args, **kwargs) From ce054b62ff0cec93030f111e0f8dd32c2f6e7ea2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Percy=20Camilo=20Trive=C3=B1o=20Aucahuasi?= Date: Sun, 23 Nov 2025 11:00:17 -0500 Subject: [PATCH 2/2] update changelog --- CHANGELOG.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a77f37a..8f1613d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,17 @@ Extensions: See [projects page](https://github.com/graphistry/graph-app-kit/projects) and [open pull requests](https://github.com/graphistry/graph-app-kit/pulls) +## [2.50.0 - 2025.11.25] + +### Infra + +* Upgrade to CUDA 13.0 base images (v2.50.0-13.0): Use RAPIDS 25.10 (from 25.02) +* Update CI/CD to build CUDA 13.0 (from 12.8) and 12.9 (from 11.8) versions +* Change conda environment activation from rapids to base + +### Fixes + +* Fix AttributeError when LOG_LEVEL=TRACE by mapping unsupported log levels to DEBUG ## [2.43.6 - 2025.08.21]