Skip to content

fix: switch npm publish from NPM_TOKEN to OIDC trusted publishing #235

fix: switch npm publish from NPM_TOKEN to OIDC trusted publishing

fix: switch npm publish from NPM_TOKEN to OIDC trusted publishing #235

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: Setup Go
uses: actions/setup-go@v5
with:
go-version: '1.21'
- name: Install Delve debugger
run: go install github.com/go-delve/delve/cmd/dlv@latest
- name: Setup Java 21
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '21'
- name: Install Node dependencies
run: pnpm install --frozen-lockfile
env:
SKIP_ADAPTER_VENDOR: 'true'
- name: Vendor adapter binaries
run: pnpm run vendor:adapters
continue-on-error: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Build project
run: pnpm run build:ci
- name: Run linting
run: pnpm run lint
# Use test:ci-coverage which includes Python tests but excludes e2e tests
- name: Run tests with coverage
run: pnpm run test:ci-coverage
env:
CI: true
- name: Upload Windows test diagnostics
if: failure() && matrix.os == 'windows-latest'
uses: actions/upload-artifact@v4
with:
name: windows-test-diagnostics
path: |
tests/**/*.log
dist/**/*.log
logs/tests/**/*.log
logs/tests/adapters/failures/**/*.json
if-no-files-found: warn
- 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
windows-python-integration:
name: Windows Python Integration Focus
runs-on: windows-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: Setup Python 3.11
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install Python dependencies
run: |
python -m pip install --upgrade pip
python -m pip install debugpy
- name: Setup Java 21
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '21'
- name: Install Node dependencies
run: pnpm install --frozen-lockfile
env:
SKIP_ADAPTER_VENDOR: 'true'
- name: Build project (CI)
run: pnpm run build:ci
- name: Run targeted Python integration tests
env:
CI: true
run: pnpm vitest run tests/adapters/python/integration/python-discovery.test.ts tests/adapters/python/integration/python_debug_workflow.test.ts
- name: Upload targeted test diagnostics
if: failure()
uses: actions/upload-artifact@v4
with:
name: windows-python-integration-logs
path: |
logs/tests/**/*.log
logs/tests/adapters/failures/**/*.json
tests/**/*.log
if-no-files-found: warn
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: Setup Java 21
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '21'
- name: Install dependencies
run: pnpm install --frozen-lockfile
env:
SKIP_ADAPTER_VENDOR: 'true'
- 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: Setup Java 21
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '21'
- name: Install dependencies
run: pnpm install --frozen-lockfile
env:
SKIP_ADAPTER_VENDOR: 'true'
- name: Vendor adapter binaries
run: pnpm run vendor:adapters
continue-on-error: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Run linting
run: pnpm run lint
- name: Build project
run: pnpm run build
env:
SKIP_ADAPTER_VENDOR: 'true'
- 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"