name: CI
on:
push:
branches: [main, master, develop]
pull_request:
branches: [main, master, develop]
jobs:
test-bun:
name: Test with Bun
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Install dependencies
run: bun install
- name: Run type checking
run: bunx tsc --noEmit || true
- name: Run tests
run: echo "Skipping tests - no test files yet"
continue-on-error: true
- name: Test tool loading
run: echo "Skipping tool test - would require env vars"
continue-on-error: true
- name: Build check
run: bun run src/index.ts --help || true
test-node:
name: Test with Node.js
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18.x, 20.x, 22.x]
steps:
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- name: Install dependencies
run: |
npm install --package-lock-only
npm ci
- name: Run type checking
run: npx tsc --noEmit || true
- name: Build
run: npm run node:build
- name: Test build output
run: node dist/index.js --help || true
validate-mcp:
name: Validate MCP Server
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Install dependencies
run: bun install
- name: Validate tool schemas
run: |
echo "Validating MCP tool schemas..."
bun run src/index.ts 2>&1 | head -n 5 || true
- name: Check environment template
run: |
if [ ! -f ".env.example" ]; then
echo "Error: .env.example file missing"
exit 1
fi
- name: Validate TypeScript types
run: bunx tsc --noEmit || true
security:
name: Security Scan
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run security audit
run: npm audit --audit-level=moderate || true
- name: Check for secrets
run: |
# Check for potential secrets in code (actual values, not env var references)
# Look for patterns like API_KEY="actual_value" or hardcoded keys
if grep -r -E "(MINDBODY_API_KEY|MINDBODY_SOURCE_PASSWORD)\s*=\s*['\"].*['\"]" --exclude-dir=.git --exclude-dir=node_modules --exclude-dir=dist --exclude="*.md" --exclude=".env.example" .; then
echo "Error: Potential secrets found in code"
exit 1
fi
echo "No hardcoded secrets found ✓"