Skip to content

Commit 9063f8d

Browse files
ArmaanBawaclaudeluarss
authored
ci: add cross-platform validation and setup scripts (#76)
- cross-platform setup docs - cross-platform.yml: test setup script only --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> Co-authored-by: Song Luar <espsluar@gmail.com>
1 parent ba4e415 commit 9063f8d

5 files changed

Lines changed: 188 additions & 0 deletions

File tree

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
# =============================================================================
2+
# PURPOSE: Validate platform-specific setup and server startup
3+
# =============================================================================
4+
5+
name: Cross-Platform Validation
6+
7+
on:
8+
push:
9+
branches: [main]
10+
pull_request:
11+
branches: [main]
12+
schedule:
13+
- cron: "0 3 * * 0"
14+
15+
env:
16+
CI: "true"
17+
MCP_SERVER_REQUEST_TIMEOUT: 120
18+
MCP_REQUEST_MAX_TOTAL_TIMEOUT: 300
19+
20+
jobs:
21+
ubuntu:
22+
strategy:
23+
fail-fast: true
24+
matrix:
25+
os: [ubuntu-22.04, ubuntu-24.04]
26+
runs-on: ${{ matrix.os }}
27+
timeout-minutes: 30
28+
29+
steps:
30+
- name: Checkout
31+
uses: actions/checkout@v4
32+
33+
- name: Run Ubuntu setup script
34+
run: bash scripts/setup-ubuntu.sh
35+
36+
- name: Verify MCP server starts
37+
run: |
38+
uv run openroad-mcp --help
39+
echo "✅ MCP server CLI verified on ${{ matrix.os }}"
40+
41+
- name: Run tests (tools and integration)
42+
run: uv run pytest tests/tools tests/integration -v
43+
44+
macos:
45+
runs-on: macos-latest
46+
timeout-minutes: 30
47+
48+
steps:
49+
- name: Checkout
50+
uses: actions/checkout@v4
51+
52+
- name: Run macOS setup script
53+
run: bash scripts/setup-macos.sh
54+
55+
- name: Verify MCP server starts (post-setup)
56+
run: |
57+
uv run openroad-mcp --help
58+
echo "✅ MCP server CLI verified post-setup"
59+
60+
- name: Run tests (tools only, skip PTY integration tests)
61+
run: uv run pytest tests/tools -v

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ A Model Context Protocol (MCP) server that provides tools for interacting with O
3838

3939
**New to OpenROAD MCP?** Check out our [Quick Start guide](QUICKSTART.md).
4040

41+
For platform-specific setup instructions, see the [Cross-Platform Guide](docs/CROSS_PLATFORM.md).
42+
4143
### Standard Configuration
4244

4345
The basic configuration for all MCP clients:

docs/CROSS_PLATFORM.md

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# Cross-Platform Guide — OpenROAD MCP
2+
3+
OpenROAD-MCP supports **Ubuntu** and **macOS**. This guide covers setup and known issues for each.
4+
5+
---
6+
7+
## Ubuntu (22.04 / 24.04)
8+
9+
### Automated Setup
10+
11+
```bash
12+
./scripts/setup-ubuntu.sh
13+
```
14+
15+
### Manual Steps
16+
17+
```bash
18+
# Install system dependencies
19+
sudo apt-get update
20+
sudo apt-get install -y python3 python3-dev build-essential curl
21+
22+
# Install uv
23+
curl -LsSf https://astral.sh/uv/install.sh | sh
24+
export PATH="$HOME/.local/bin:$PATH"
25+
26+
# Install OpenROAD (for integration tests)
27+
# See: https://openroad.readthedocs.io/en/latest/main/GettingStarted.html
28+
29+
# Sync project
30+
uv sync --all-extras --inexact
31+
make test
32+
```
33+
34+
---
35+
36+
## macOS
37+
38+
### Automated Setup
39+
40+
```bash
41+
./scripts/setup-macos.sh
42+
```
43+
44+
### Known Issues
45+
46+
| Issue | Workaround |
47+
|-------|-----------|
48+
| OpenROAD not available via Homebrew | Use Docker: `docker compose up openroad-mcp` |
49+
| PTY tests flaky on macOS CI | Run `make test` (core only); PTY tests are optional |
50+
| `libomp` not found | `brew install libomp` |
51+
52+
---
53+
54+
For testing commands and MCP client compatibility, see the main [README.md](../README.md).

scripts/setup-macos.sh

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#!/usr/bin/env bash
2+
# =============================================================================
3+
# setup-macos.sh — Install OpenROAD-MCP dependencies on macOS
4+
# =============================================================================
5+
set -euo pipefail
6+
7+
echo "🔧 Setting up OpenROAD-MCP on macOS..."
8+
9+
if [[ -z "${CI:-}" ]]; then
10+
read -r -p "This script will install uv and project dependencies. Continue? [y/N] " response
11+
if [[ ! "$response" =~ ^[Yy]$ ]]; then
12+
echo "Aborted."
13+
exit 0
14+
fi
15+
fi
16+
17+
if ! command -v uv &>/dev/null; then
18+
echo "📦 Installing uv..."
19+
curl -LsSf https://astral.sh/uv/install.sh | sh
20+
export PATH="$HOME/.local/bin:$PATH"
21+
fi
22+
23+
echo "📦 Installing project dependencies..."
24+
uv sync --all-extras --inexact
25+
26+
echo ""
27+
echo "✅ macOS setup complete!"
28+
echo ""
29+
echo "Next steps:"
30+
echo " 1. Install OpenROAD (optional, for full flows):"
31+
echo " See: https://openroad.readthedocs.io/en/latest/main/GettingStarted.html"
32+
echo " 2. Or use Docker: docker compose up openroad-mcp"
33+
echo " 3. Run tests: make test"
34+
echo " 4. Start MCP server: uv run openroad-mcp"

scripts/setup-ubuntu.sh

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
#!/usr/bin/env bash
2+
# =============================================================================
3+
# setup-ubuntu.sh — Install OpenROAD-MCP dependencies on Ubuntu (22.04/24.04)
4+
# =============================================================================
5+
set -euo pipefail
6+
7+
echo "🔧 Setting up OpenROAD-MCP on Ubuntu..."
8+
9+
if [[ -z "${CI:-}" ]]; then
10+
read -r -p "This script will install system packages and project dependencies. Continue? [y/N] " response
11+
if [[ ! "$response" =~ ^[Yy]$ ]]; then
12+
echo "Aborted."
13+
exit 0
14+
fi
15+
fi
16+
17+
sudo apt-get update
18+
sudo apt-get install -y \
19+
python3 python3-dev \
20+
build-essential curl
21+
22+
if ! command -v uv &>/dev/null; then
23+
echo "📦 Installing uv..."
24+
curl -LsSf https://astral.sh/uv/install.sh | sh
25+
export PATH="$HOME/.local/bin:$PATH"
26+
fi
27+
28+
echo "📦 Installing project dependencies..."
29+
uv sync --all-extras --inexact
30+
31+
echo ""
32+
echo "✅ Ubuntu setup complete!"
33+
echo ""
34+
echo "Next steps:"
35+
echo " 1. Install OpenROAD: https://openroad.readthedocs.io/en/latest/main/GettingStarted.html"
36+
echo " 2. Run tests: make test"
37+
echo " 3. Start MCP server: uv run openroad-mcp"

0 commit comments

Comments
 (0)