From 867ae73b9c27694a6af44bea8e9142cc1d68776c Mon Sep 17 00:00:00 2001 From: mgoin Date: Thu, 13 Nov 2025 18:01:17 -0500 Subject: [PATCH 1/3] Add smoke test for Apple Silicon using GHA MacOS runner Signed-off-by: mgoin --- .github/workflows/macos-smoke-test.yml | 85 ++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 .github/workflows/macos-smoke-test.yml diff --git a/.github/workflows/macos-smoke-test.yml b/.github/workflows/macos-smoke-test.yml new file mode 100644 index 000000000000..af27b09237da --- /dev/null +++ b/.github/workflows/macos-smoke-test.yml @@ -0,0 +1,85 @@ +name: macOS Apple Silicon Smoke Test + +on: + pull_request: + paths: + - 'csrc/cpu/**' + - 'cmake/cpu_extension.cmake' + - 'requirements/cpu*.txt' + - 'vllm/platforms/cpu.py' + workflow_dispatch: # Manual trigger + +jobs: + macos-m1-smoke-test: + runs-on: macos-14 # Free M1 runner + timeout-minutes: 60 + + steps: + # 1. Checkout code + - uses: actions/checkout@v4 + + # 2. Setup uv with Python 3.12 + - uses: astral-sh/setup-uv@v4 + with: + enable-cache: true + python-version: '3.12' + + # 3. Install dependencies + - name: Install dependencies + run: | + uv pip install -r requirements/cpu-build.txt + uv pip install -r requirements/cpu.txt + + # 4. Build vLLM from source + - name: Build vLLM + run: uv pip install -v -e . + env: + CMAKE_BUILD_PARALLEL_LEVEL: 4 + + # 5. Verify installation + - name: Verify installation + run: | + python -c "import vllm; print(f'vLLM version: {vllm.__version__}')" + python -c "import torch; print(f'PyTorch: {torch.__version__}')" + + # 6. Run smoke test with vllm serve + - name: Smoke test vllm serve + timeout-minutes: 10 + run: | + # Start server in background + vllm serve Qwen/Qwen3-0.6B \ + --max-model-len=2048 \ + --load-format=dummy \ + --enforce-eager \ + --port 8000 & + + SERVER_PID=$! + + # Wait for server to start + for i in {1..30}; do + if curl -s http://localhost:8000/health > /dev/null; then + echo "Server started successfully" + break + fi + if [ "$i" -eq 30 ]; then + echo "Server failed to start" + kill "$SERVER_PID" + exit 1 + fi + sleep 2 + done + + # Test health endpoint + curl -f http://localhost:8000/health + + # Test completion + curl -f http://localhost:8000/v1/completions \ + -H "Content-Type: application/json" \ + -d '{ + "model": "Qwen/Qwen3-0.6B", + "prompt": "Hello", + "max_tokens": 5 + }' + + # Cleanup + kill "$SERVER_PID" From 9a8e88de48b8a0a99106ca5906682e60e72fd383 Mon Sep 17 00:00:00 2001 From: mgoin Date: Thu, 13 Nov 2025 18:05:54 -0500 Subject: [PATCH 2/3] . Signed-off-by: mgoin --- .github/workflows/macos-smoke-test.yml | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/.github/workflows/macos-smoke-test.yml b/.github/workflows/macos-smoke-test.yml index af27b09237da..900c3fc743c5 100644 --- a/.github/workflows/macos-smoke-test.yml +++ b/.github/workflows/macos-smoke-test.yml @@ -11,38 +11,32 @@ on: jobs: macos-m1-smoke-test: - runs-on: macos-14 # Free M1 runner - timeout-minutes: 60 + runs-on: macos-latest + timeout-minutes: 20 steps: - # 1. Checkout code - uses: actions/checkout@v4 - # 2. Setup uv with Python 3.12 - uses: astral-sh/setup-uv@v4 with: enable-cache: true python-version: '3.12' - # 3. Install dependencies - name: Install dependencies run: | uv pip install -r requirements/cpu-build.txt uv pip install -r requirements/cpu.txt - # 4. Build vLLM from source - name: Build vLLM run: uv pip install -v -e . env: CMAKE_BUILD_PARALLEL_LEVEL: 4 - # 5. Verify installation - name: Verify installation run: | python -c "import vllm; print(f'vLLM version: {vllm.__version__}')" python -c "import torch; print(f'PyTorch: {torch.__version__}')" - # 6. Run smoke test with vllm serve - name: Smoke test vllm serve timeout-minutes: 10 run: | From 181707645dfcbd03c49c20a891cf81ba8ae0ac08 Mon Sep 17 00:00:00 2001 From: Michael Goin Date: Thu, 13 Nov 2025 19:43:55 -0700 Subject: [PATCH 3/3] Manual run only --- .github/workflows/macos-smoke-test.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/workflows/macos-smoke-test.yml b/.github/workflows/macos-smoke-test.yml index 900c3fc743c5..f56fdc0dbe79 100644 --- a/.github/workflows/macos-smoke-test.yml +++ b/.github/workflows/macos-smoke-test.yml @@ -1,12 +1,6 @@ name: macOS Apple Silicon Smoke Test on: - pull_request: - paths: - - 'csrc/cpu/**' - - 'cmake/cpu_extension.cmake' - - 'requirements/cpu*.txt' - - 'vllm/platforms/cpu.py' workflow_dispatch: # Manual trigger jobs: