Commit b791f28d01 for freeswitch.com

commit b791f28d010f165c8e057602c2b7e60111706454
Author: Andrey Volk <andywolk@gmail.com>
Date:   Mon Nov 9 23:03:18 2026 +0300

    [GHA] Move CI to Debian 13 (Trixie). (#3278)

    Use the freeswitch-public-ci-base:trixie-amd64 image for unit-tests, D-in-D unit-tests and scan-build.
    ci.sh: use scan-build-14 on bookworm and the default scan-build (clang 19) otherwise.

diff --git a/.github/docker/debian/bookworm/amd64/CI/Dockerfile b/.github/docker/debian/trixie/amd64/CI/Dockerfile
similarity index 92%
rename from .github/docker/debian/bookworm/amd64/CI/Dockerfile
rename to .github/docker/debian/trixie/amd64/CI/Dockerfile
index 0fd3cec5f4..26bf74d296 100644
--- a/.github/docker/debian/bookworm/amd64/CI/Dockerfile
+++ b/.github/docker/debian/trixie/amd64/CI/Dockerfile
@@ -1,4 +1,4 @@
-ARG BUILDER_IMAGE=signalwire/freeswitch-public-ci-base:bookworm-amd64
+ARG BUILDER_IMAGE=signalwire/freeswitch-public-ci-base:trixie-amd64

 FROM ${BUILDER_IMAGE}

diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 0d65a6171a..d9eb5c28fc 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -27,7 +27,7 @@ on:
         default: false

 env:
-  CI_BASE_STATIC_IMAGE: signalwire/freeswitch-public-ci-base:bookworm-amd64
+  CI_BASE_STATIC_IMAGE: signalwire/freeswitch-public-ci-base:trixie-amd64
   DOCKER_BUILD_SUMMARY: false
   DOCKER_BUILD_CHECKS_ANNOTATIONS: false
   DOCKER_BUILD_RECORD_UPLOAD: false
diff --git a/.github/workflows/scan-build.yml b/.github/workflows/scan-build.yml
index 4237a28c4f..76e51941a9 100644
--- a/.github/workflows/scan-build.yml
+++ b/.github/workflows/scan-build.yml
@@ -16,7 +16,7 @@ jobs:
   scan-build:
     runs-on: ubuntu-latest
     container:
-      image: signalwire/freeswitch-public-ci-base:bookworm-amd64
+      image: signalwire/freeswitch-public-ci-base:trixie-amd64
       options: --privileged
     env:
       DEBIAN_FRONTEND: noninteractive
diff --git a/.github/workflows/unit-test-dind.yml b/.github/workflows/unit-test-dind.yml
index 082763c07e..4688d5523b 100644
--- a/.github/workflows/unit-test-dind.yml
+++ b/.github/workflows/unit-test-dind.yml
@@ -23,7 +23,7 @@ jobs:
   unit-tests:
     runs-on: ubuntu-latest
     container:
-      image: signalwire/freeswitch-public-ci-base:bookworm-amd64
+      image: signalwire/freeswitch-public-ci-base:trixie-amd64
       options: --privileged
     env:
       DEBIAN_FRONTEND: noninteractive
@@ -65,7 +65,7 @@ jobs:
           echo "logs_path=${GITHUB_WORKSPACE}/freeswitch/tests/unit/logs" >> $GITHUB_OUTPUT

           "${GITHUB_WORKSPACE}/freeswitch/tests/unit/run-tests-docker.sh" \
-            --base-image signalwire/freeswitch-public-ci-base:bookworm-amd64 \
+            --base-image signalwire/freeswitch-public-ci-base:trixie-amd64 \
             --cpus ${{ env.NUM_CPU_PER_CONTAINER }} \
             --image-tag ci.local \
             --max-containers ${{ env.MAX_CONTAINERS }} \
diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml
index 6cf6f24c97..86c05ae03f 100644
--- a/.github/workflows/unit-test.yml
+++ b/.github/workflows/unit-test.yml
@@ -25,7 +25,7 @@ on:
         description: 'Container image to use for running tests'
         required: false
         type: string
-        default: 'signalwire/freeswitch-public-ci-base:bookworm-amd64'
+        default: 'signalwire/freeswitch-public-ci-base:trixie-amd64'
       working-directory:
         description: 'Working directory for running tests'
         required: false
diff --git a/ci.sh b/ci.sh
index 9207bcd1a1..edff73e934 100755
--- a/ci.sh
+++ b/ci.sh
@@ -131,14 +131,24 @@ build_freeswitch()

 			;;
 		"scan-build")
-			if ! command -v scan-build-14 > /dev/null 2>&1; then
-				echo "Error: scan-build-14 command not found. Please ensure clang static analyzer is installed." >&2
+			# Use scan-build-14 for bookworm, default scan-build otherwise
+			DEBIAN_CODENAME=$(. /etc/os-release && echo "$VERSION_CODENAME")
+			if [[ "$DEBIAN_CODENAME" == "bookworm" ]]; then
+				SCAN_BUILD_CMD="scan-build-14"
+			else
+				SCAN_BUILD_CMD="scan-build"
+			fi
+
+			if ! command -v $SCAN_BUILD_CMD > /dev/null 2>&1; then
+				echo "Error: $SCAN_BUILD_CMD command not found. Please ensure clang static analyzer is installed." >&2
 				exit 1
 			fi

+			echo "Using: $SCAN_BUILD_CMD (Debian: $DEBIAN_CODENAME)"
+
 			mkdir -p scan-build

-			scan-build-14 \
+			$SCAN_BUILD_CMD \
 				--force-analyze-debug-code \
 				--status-bugs \
 				-o ./scan-build/ \
diff --git a/tests/unit/run-tests-docker.sh b/tests/unit/run-tests-docker.sh
index 91e52d3b3d..2b7b0105a0 100755
--- a/tests/unit/run-tests-docker.sh
+++ b/tests/unit/run-tests-docker.sh
@@ -92,7 +92,7 @@ if ! docker build \
 	--build-arg BUILDER_IMAGE="$BASE_IMAGE" \
 	--build-context sofia-sip="$SOFIA_SIP_PATH" \
 	--build-context freeswitch="$FREESWITCH_PATH" \
-	--file "$FREESWITCH_PATH/.github/docker/debian/bookworm/amd64/CI/Dockerfile" \
+	--file "$FREESWITCH_PATH/.github/docker/debian/trixie/amd64/CI/Dockerfile" \
 	--tag "$IMAGE_TAG" \
 	"$FREESWITCH_PATH/.github/docker/debian" > "$BUILD_LOG" 2>&1; then
 	echo "Docker build failed! Build log:"