Skip to content

fix(ci): fail loudly on MCP registry publish errors (was masked by ||… #245

fix(ci): fail loudly on MCP registry publish errors (was masked by ||…

fix(ci): fail loudly on MCP registry publish errors (was masked by ||… #245

name: Integrations CI — Core
on:
push:
branches: [main, 'feature/integrations-*']
pull_request:
branches: [main]
jobs:
shared-infra:
name: Shared test-utils
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
- run: cd shared/test-utils && npm ci && npm test
phase-1-docker:
name: Phase 1B — Docker image build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build Docker image
run: docker build -t grasp-test docker/ 2>/dev/null || echo "docker/ not yet created"
- name: Smoke test
run: docker run grasp-test grasp --version 2>/dev/null || echo "skip — docker/ not yet created"
phase-1-homebrew:
name: Phase 1A — Homebrew formula audit
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: Audit formula
run: |
if [ -f homebrew-formula/grasp.rb ]; then
brew ruby -e "require 'formula'; puts 'formula ok'" || true
else
echo "homebrew-formula/ not yet created, skipping"
fi
phase-2-github-action:
name: Phase 2A — GitHub Action tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
- name: Test GitHub Action
env:
INPUT_TOKEN: dummy-token-for-tests
INPUT_THRESHOLD: D
INPUT_POST_COMMENT: 'false'
run: |
if [ -f github-action/package.json ]; then
cd github-action && npm ci && npm test
else
echo "github-action/ not yet created, skipping"
fi
phase-2-gitlab-ci:
name: Phase 2B — GitLab CI component
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
- name: Test GitLab CI component
run: |
if [ -f gitlab-ci-component/package.json ]; then
cd gitlab-ci-component && npm ci && npm test
else
echo "gitlab-ci-component/ not yet created, skipping"
fi
phase-3-bots:
name: Phase 3 — Communication bots
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
- name: Test Teams bot
run: |
if [ -f teams-bot/package.json ]; then
cd teams-bot && npm ci && npm test
else
echo "teams-bot/ not yet created, skipping"
fi
- name: Test Discord bot
run: |
if [ -f discord-bot/package.json ]; then
cd discord-bot && npm ci && npm test
else
echo "discord-bot/ not yet created, skipping"
fi
phase-4-sources:
name: Phase 4 — MCP source adapters
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
- name: Test MCP sources
run: |
if [ -f mcp/package.json ]; then
cd mcp && npm ci --legacy-peer-deps && npm test -- --testPathPattern="sources/" 2>/dev/null || echo "no source tests yet"
fi
phase-4-gitea-e2e:
name: Phase 4C — Gitea E2E
runs-on: ubuntu-latest
services:
gitea:
image: gitea/gitea:latest
ports:
- 3000:3000
env:
GITEA__database__DB_TYPE: sqlite3
GITEA__server__HTTP_PORT: 3000
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
- name: Wait for Gitea
run: |
for i in $(seq 1 20); do
curl -sf http://localhost:3000 && break || sleep 3
done
- name: Run Gitea E2E tests
run: |
if [ -f mcp/package.json ]; then
cd mcp && npm ci --legacy-peer-deps && GITEA_URL=http://localhost:3000 npm test -- --testPathPattern="gitea" 2>/dev/null || echo "no gitea tests yet"
fi