94057c3d3e
PR Test (NPU) / check-changes (push) Has been cancelled
PR Test (NPU) / pr-gate (push) Has been cancelled
PR Test (NPU) / set-image-config (push) Has been cancelled
PR Test (NPU) / stage-b-test-1-npu-a2 (0) (push) Has been cancelled
PR Test (NPU) / stage-b-test-1-npu-a2 (1) (push) Has been cancelled
PR Test (NPU) / stage-b-test-2-npu-a2 (0) (push) Has been cancelled
PR Test (NPU) / stage-b-test-2-npu-a2 (1) (push) Has been cancelled
PR Test (NPU) / stage-b-test-4-npu-a3 (push) Has been cancelled
PR Test (NPU) / stage-b-test-16-npu-a3 (push) Has been cancelled
PR Test (NPU) / multimodal-gen-test-1-npu-a3 (push) Has been cancelled
PR Test (NPU) / multimodal-gen-test-2-npu-a3 (push) Has been cancelled
PR Test (Arm64) / pr-gate (push) Has been cancelled
PR Test (Arm64) / check-changes (push) Has been cancelled
PR Test (Arm64) / build-test (push) Has been cancelled
PR Test (sgl-router) / gate (push) Has been cancelled
PR Test (sgl-router) / tier-1 — lint (push) Has been cancelled
PR Test (sgl-router) / tier-2 — build + test (push) Has been cancelled
PR Test (sgl-router) / tier-3 — docker (placeholder) (push) Has been cancelled
PR Test (sgl-router) / tier-3 — k8s integration (push) Has been cancelled
PR Test (sgl-router) / tier-3 — e2e (push) Has been cancelled
PR Test (sgl-router) / finish (push) Has been cancelled
PR Test (NPU) / single-node-poc (map[name:qwen3_6_27b_w8a8_1p_in64k_out1k_50ms runner:linux-aarch64-a3-2 test_case:test/registered/ascend/performance/qwen3_6_27b/test_npu_qwen3_6_27b_w8a8_1p_in64k_out1k_50ms.py test_type:perf]) (push) Has been cancelled
PR Test (NPU) / pr-test-npu-finish (push) Has been cancelled
PR Test (Xeon) / pr-gate (push) Has been cancelled
PR Test (Xeon) / check-changes (push) Has been cancelled
PR Test (Xeon) / build-test (, xeon-gnr, base-b-test-cpu) (push) Has been cancelled
PR Test (XPU) / check-changes (push) Has been cancelled
PR Test (XPU) / pr-gate (push) Has been cancelled
PR Test (XPU) / stage-a-test-1-gpu-xpu (push) Has been cancelled
PR Test (XPU) / wait-for-stage-a (push) Has been cancelled
PR Test (XPU) / stage-b-test-1-gpu-xpu (push) Has been cancelled
PR Test (XPU) / finish (push) Has been cancelled
CI Model Inventory / build-inventory (push) Has been cancelled
Lint / lint (push) Has been cancelled
PR Benchmark (SMG Components) / Benchmark Compilation Check (push) Has been cancelled
PR Benchmark (SMG Components) / Benchmark - Manual Policy (push) Has been cancelled
PR Benchmark (SMG Components) / Benchmark - Request Processing (push) Has been cancelled
PR Benchmark (SMG Components) / Benchmark Summary (push) Has been cancelled
PR Test (SMG) / build-wheel (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on windows (x86_64 - auto) (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on macos (x86_64 - auto) (push) Has been cancelled
PR Test (SMG) / python-unit-tests (push) Has been cancelled
PR Test (SMG) / unit-tests (push) Has been cancelled
PR Test (SMG) / benchmarks (push) Has been cancelled
PR Test (SMG) / chat-completions (push) Has been cancelled
PR Test (SMG) / chat-completions-4gpu (push) Has been cancelled
PR Test (SMG) / e2e (push) Has been cancelled
PR Test (SMG) / docker-build-test (push) Has been cancelled
PR Test (SMG) / k8s-integration (push) Has been cancelled
PR Test (SMG) / finish (push) Has been cancelled
PR Test (SMG) / summarize-benchmarks (push) Has been cancelled
Release SGLang Model Gateway Docker Image / publish (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on macos (aarch64 - auto) (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on linux (aarch64 - auto) (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on linux (x86_64 - auto) (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on linux (aarch64 - musllinux_1_1) (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on linux (x86_64 - musllinux_1_1) (push) Has been cancelled
Release SGLang Model Gateway to PyPI / Build SDist (push) Has been cancelled
Release SGLang Model Gateway to PyPI / Upload to PyPI (push) Has been cancelled
Release SGLang Kernels / build-cu129-matrix (aarch64, 12.9, 3.10, arm-kernel-build-node) (push) Has been cancelled
Release SGLang Kernels / build-cu129-matrix (x86_64, 12.9, 3.10, x64-kernel-build-node) (push) Has been cancelled
Release SGLang Kernels / release-cu129 (push) Has been cancelled
Release SGLang Kernels / build-cu130-matrix (aarch64, 13.0, 3.10, arm-kernel-build-node) (push) Has been cancelled
Release SGLang Kernels / build-cu130-matrix (x86_64, 13.0, 3.10, x64-kernel-build-node) (push) Has been cancelled
Release SGLang Kernels / release-cu130 (push) Has been cancelled
Release SGLang Kernels / build-rocm-matrix (3.10, 700) (push) Has been cancelled
Release SGLang Kernels / build-rocm-matrix (3.10, 720) (push) Has been cancelled
Release SGLang Kernels / release-rocm700 (push) Has been cancelled
Release SGLang Kernels / release-rocm720 (push) Has been cancelled
Release SGLang Kernels / build-musa43 (43, 3.10) (push) Has been cancelled
Release SGLang Kernels / release-musa43 (push) Has been cancelled
151 lines
4.7 KiB
Python
Executable File
151 lines
4.7 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""
|
|
Check if sglang-kernel version from sgl-kernel/pyproject.toml matches the versions
|
|
used in SGLang files (python/pyproject.toml, engine.py, and Dockerfile).
|
|
Sets GitHub Actions output variables to indicate if sync is needed.
|
|
"""
|
|
|
|
import os
|
|
import re
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
try:
|
|
import tomllib # Python 3.11+
|
|
except ImportError:
|
|
import tomli as tomllib # Fallback for older Python versions
|
|
|
|
|
|
def get_kernel_version_from_source() -> str:
|
|
"""Extract version from sgl-kernel/pyproject.toml (line 11)"""
|
|
pyproject_path = Path("sgl-kernel/pyproject.toml")
|
|
|
|
if not pyproject_path.exists():
|
|
print(f"Error: {pyproject_path} not found")
|
|
sys.exit(1)
|
|
|
|
with open(pyproject_path, "rb") as f:
|
|
data = tomllib.load(f)
|
|
|
|
version = data.get("project", {}).get("version")
|
|
if not version:
|
|
print("Error: Could not find version in sgl-kernel/pyproject.toml")
|
|
sys.exit(1)
|
|
|
|
return version
|
|
|
|
|
|
def get_kernel_version_from_python_pyproject() -> str:
|
|
"""Extract sglang-kernel version from python/pyproject.toml"""
|
|
pyproject_path = Path("python/pyproject.toml")
|
|
|
|
if not pyproject_path.exists():
|
|
print(f"Error: {pyproject_path} not found")
|
|
sys.exit(1)
|
|
|
|
content = pyproject_path.read_text()
|
|
|
|
# Match "sglang-kernel==x.x.x"
|
|
match = re.search(r'"sglang-kernel==([^"]+)"', content)
|
|
if not match:
|
|
print("Error: Could not find sglang-kernel version in python/pyproject.toml")
|
|
sys.exit(1)
|
|
|
|
return match.group(1)
|
|
|
|
|
|
def get_kernel_version_from_engine() -> str:
|
|
"""Extract sglang-kernel version from python/sglang/srt/entrypoints/engine.py"""
|
|
engine_path = Path("python/sglang/srt/entrypoints/engine.py")
|
|
|
|
if not engine_path.exists():
|
|
print(f"Error: {engine_path} not found")
|
|
sys.exit(1)
|
|
|
|
content = engine_path.read_text()
|
|
|
|
# Find the assert_pkg_version call for sglang-kernel
|
|
# Look for the pattern: assert_pkg_version("sglang-kernel", "version", ...)
|
|
match = re.search(
|
|
r'assert_pkg_version\s*\(\s*"sglang-kernel"\s*,\s*"([^"]+)"', content
|
|
)
|
|
if not match:
|
|
print("Error: Could not find sglang-kernel version in engine.py")
|
|
sys.exit(1)
|
|
|
|
return match.group(1)
|
|
|
|
|
|
def get_kernel_version_from_dockerfile() -> str:
|
|
"""Extract SGL_KERNEL_VERSION from docker/Dockerfile"""
|
|
dockerfile_path = Path("docker/Dockerfile")
|
|
|
|
if not dockerfile_path.exists():
|
|
print(f"Error: {dockerfile_path} not found")
|
|
sys.exit(1)
|
|
|
|
content = dockerfile_path.read_text()
|
|
|
|
# Match ARG SGL_KERNEL_VERSION=x.x.x
|
|
match = re.search(r"^ARG\s+SGL_KERNEL_VERSION=(.+)$", content, re.MULTILINE)
|
|
if not match:
|
|
print("Error: Could not find SGL_KERNEL_VERSION in Dockerfile")
|
|
sys.exit(1)
|
|
|
|
return match.group(1).strip()
|
|
|
|
|
|
def main():
|
|
kernel_version = get_kernel_version_from_source()
|
|
pyproject_version = get_kernel_version_from_python_pyproject()
|
|
engine_version = get_kernel_version_from_engine()
|
|
dockerfile_version = get_kernel_version_from_dockerfile()
|
|
|
|
print(f"Kernel version in sgl-kernel/pyproject.toml: {kernel_version}")
|
|
print(
|
|
f"SGLang kernel dependency version in python/pyproject.toml: {pyproject_version}"
|
|
)
|
|
print(f"SGLang kernel dependency version in engine.py: {engine_version}")
|
|
print(f"Kernel version in Dockerfile: {dockerfile_version}")
|
|
|
|
# Check if any version differs from the source
|
|
needs_sync = (
|
|
kernel_version != pyproject_version
|
|
or kernel_version != engine_version
|
|
or kernel_version != dockerfile_version
|
|
)
|
|
|
|
# Set GitHub Actions output
|
|
github_output = os.getenv("GITHUB_OUTPUT")
|
|
if github_output:
|
|
with open(github_output, "a") as f:
|
|
f.write(f"needs_sync={'true' if needs_sync else 'false'}\n")
|
|
f.write(f"kernel_version={kernel_version}\n")
|
|
|
|
if needs_sync:
|
|
print(f"\n✓ Sync needed to version: {kernel_version}")
|
|
mismatches = []
|
|
if kernel_version != pyproject_version:
|
|
mismatches.append(
|
|
f" - python/pyproject.toml: {pyproject_version} → {kernel_version}"
|
|
)
|
|
if kernel_version != engine_version:
|
|
mismatches.append(f" - engine.py: {engine_version} → {kernel_version}")
|
|
if kernel_version != dockerfile_version:
|
|
mismatches.append(
|
|
f" - Dockerfile: {dockerfile_version} → {kernel_version}"
|
|
)
|
|
|
|
print("Changes needed:")
|
|
for mismatch in mismatches:
|
|
print(mismatch)
|
|
|
|
sys.exit(0)
|
|
else:
|
|
print("\n✓ All versions are in sync, no action needed")
|
|
sys.exit(0)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|