Skip to content

CI: Fix TS7016 by removing local TS path maps to @debugmcp/shared; rely on project references #76

CI: Fix TS7016 by removing local TS path maps to @debugmcp/shared; rely on project references

CI: Fix TS7016 by removing local TS path maps to @debugmcp/shared; rely on project references #76

Workflow file for this run

name: CI
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main ]
jobs:
build-and-test:
name: Build and Test
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
node-version: [22.x]
python-version: ['3.11']
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup pnpm
uses: pnpm/action-setup@v2
with:
version: 10
- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'pnpm'
- name: Setup Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install Python dependencies
run: |
python -m pip install --upgrade pip
python -m pip install debugpy
- name: Install Node dependencies
run: pnpm install --frozen-lockfile
- name: Debug - Check package structure after install
run: |
echo "=== Checking @debugmcp/shared package structure AFTER INSTALL ==="
echo "Contents of packages/shared:"
ls -la packages/shared/
echo ""
echo "Contents of packages/shared/dist (if exists):"
ls -la packages/shared/dist/ 2>/dev/null || echo "dist directory does not exist yet"
echo ""
echo "Contents of node_modules/@debugmcp (if exists):"
ls -la node_modules/@debugmcp/ 2>/dev/null || echo "@debugmcp directory does not exist"
echo ""
echo "Check symlink target for shared:"
readlink -f node_modules/@debugmcp/shared 2>/dev/null || echo "No symlink found"
echo ""
echo "Check symlink in adapter-mock:"
ls -la packages/adapter-mock/node_modules/@debugmcp/ 2>/dev/null || echo "No @debugmcp in adapter-mock node_modules"
- name: Build shared package only
run: |
echo "=== Building @debugmcp/shared first ==="
cd packages/shared
pnpm run build
echo ""
echo "=== Shared package build complete ==="
echo "Contents of packages/shared/dist after build:"
ls -la dist/
echo ""
echo "Check if index.d.ts exists:"
if [ -f dist/index.d.ts ]; then
echo "index.d.ts exists! First 20 lines:"
head -20 dist/index.d.ts
else
echo "ERROR: index.d.ts was not generated!"
fi
cd ../..
- name: Debug - Check symlinks after shared build
run: |
echo "=== Checking symlinks AFTER SHARED BUILD ==="
echo "Contents of node_modules/@debugmcp/shared:"
ls -la node_modules/@debugmcp/shared/ 2>/dev/null || echo "Shared not in node_modules"
echo ""
echo "If it's a symlink, what does it point to:"
readlink -f node_modules/@debugmcp/shared 2>/dev/null || echo "Not a symlink or doesn't exist"
echo ""
echo "Contents of the symlink target (if it exists):"
ls -la $(readlink -f node_modules/@debugmcp/shared)/ 2>/dev/null || echo "Cannot list symlink target"
echo ""
echo "Check for dist in symlink target:"
ls -la $(readlink -f node_modules/@debugmcp/shared)/dist/ 2>/dev/null || echo "No dist in symlink target"
- name: Build remaining packages
run: |
echo "=== Building adapter packages ==="
pnpm run build:packages
echo "Build packages complete"
- name: Debug - Final state before main build
run: |
echo "=== FINAL STATE BEFORE MAIN BUILD ==="
echo "Adapter-mock dist:"
ls -la packages/adapter-mock/dist/ 2>/dev/null || echo "No dist yet"
echo ""
echo "Adapter-python dist:"
ls -la packages/adapter-python/dist/ 2>/dev/null || echo "No dist yet"
- name: Build main project
run: pnpm run build
- name: Run linting
run: pnpm run lint
# Use test:ci-no-python which excludes Python and e2e tests
- name: Run tests with coverage
run: pnpm run test:ci-no-python
env:
CI: true
- name: Upload coverage reports
uses: actions/upload-artifact@v4
if: matrix.os == 'ubuntu-latest'
with:
name: coverage-report
path: coverage/
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
if: matrix.os == 'ubuntu-latest'
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./coverage/coverage-final.json
flags: unittests
name: codecov-umbrella
fail_ci_if_error: false
lint:
name: Lint Code
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup pnpm
uses: pnpm/action-setup@v2
with:
version: 10
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '22.x'
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Run ESLint
run: pnpm run lint
- name: Check for personal information
run: pnpm run check:all-personal-paths
# Separate job for container tests on Linux only
container-tests:
name: Container Tests
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup pnpm
uses: pnpm/action-setup@v2
with:
version: 10
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '22.x'
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Run linting
run: pnpm run lint
- name: Build project
run: pnpm run build
- name: Build Docker image
run: docker build -t mcp-debugger:local .
- name: Run container tests
run: pnpm run test:e2e:container
test-summary:
name: Test Summary
needs: [build-and-test, container-tests]
runs-on: ubuntu-latest
if: always()
steps:
- name: Check test results
run: |
echo "✅ CI pipeline completed"
echo "Check the test results in the build-and-test job"