Skip to content

Implement MCP Real-time Streaming, Notifications, and Connection Health Monitoring (Issues #3, #4, #5, #6) #50

Implement MCP Real-time Streaming, Notifications, and Connection Health Monitoring (Issues #3, #4, #5, #6)

Implement MCP Real-time Streaming, Notifications, and Connection Health Monitoring (Issues #3, #4, #5, #6) #50

Workflow file for this run

name: CI
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main, develop ]
env:
RUST_BACKTRACE: 1
jobs:
test:
name: Test
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-24.04, windows-latest, macOS-latest]
rust: [stable]
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ matrix.rust }}
components: rustfmt, clippy
- name: Cache cargo
uses: actions/cache@v3
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Install dependencies (Ubuntu)
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.1-dev libayatana-appindicator3-dev librsvg2-dev libsoup-3.0-dev libsoup2.4-dev
- name: Check formatting
run: cargo fmt -- --check
- name: Run clippy on server
run: cargo clippy --package glsp-mcp-server --all-targets -- -D warnings
- name: Check if web client dist exists
id: check-dist
run: |
if [ -d "glsp-web-client/dist" ]; then
echo "dist_exists=true" >> $GITHUB_OUTPUT
else
echo "dist_exists=false" >> $GITHUB_OUTPUT
fi
shell: bash
- name: Run clippy on Tauri
if: steps.check-dist.outputs.dist_exists == 'true'
run: cargo clippy --package glsp-desktop --all-targets --all-features -- -D warnings
- name: Run tests on server
run: cargo test --package glsp-mcp-server
- name: Run tests on Tauri
if: steps.check-dist.outputs.dist_exists == 'true'
run: cargo test --package glsp-desktop
build-web-client:
name: Build Web Client
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
cache-dependency-path: glsp-web-client/package-lock.json
- name: Install dependencies
working-directory: ./glsp-web-client
run: npm ci
- name: Build
working-directory: ./glsp-web-client
run: npx vite build
build-tauri:
name: Build Tauri (Test)
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-24.04, windows-latest, macOS-latest]
steps:
- uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Install dependencies (Ubuntu)
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.1-dev libayatana-appindicator3-dev librsvg2-dev libsoup-3.0-dev libsoup2.4-dev
- name: Install web client dependencies
working-directory: ./glsp-web-client
run: npm ci
- name: Build web client
working-directory: ./glsp-web-client
run: npx vite build
- name: Install Tauri dependencies
working-directory: ./glsp-tauri
run: npm ci
- name: Build Tauri (not bundled for CI speed)
working-directory: ./glsp-tauri
run: npx tauri build --debug