Skip to main content
Glama
ci.yml6.08 kB
name: CI on: push: branches: - main - next pull_request: workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true permissions: contents: read env: DO_NOT_TRACK: 1 NODE_ENV: development NODE_VERSION: 20 jobs: # Single install job that caches node_modules for all other jobs install: name: Install Dependencies runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} - name: Cache node_modules id: cache-node-modules uses: actions/cache@v4 with: path: node_modules key: node-modules-${{ runner.os }}-node${{ env.NODE_VERSION }}-${{ hashFiles('package-lock.json') }} - name: Install dependencies if: steps.cache-node-modules.outputs.cache-hit != 'true' run: npm ci timeout-minutes: 5 # Fast checks that can run in parallel format-check: name: Format Check runs-on: ubuntu-latest needs: install steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} - name: Restore node_modules cache id: cache-node-modules uses: actions/cache@v4 with: path: node_modules key: node-modules-${{ runner.os }}-node${{ env.NODE_VERSION }}-${{ hashFiles('package-lock.json') }} - name: Install dependencies if: steps.cache-node-modules.outputs.cache-hit != 'true' run: npm ci timeout-minutes: 5 - name: Format Check run: npm run format-check env: FORCE_COLOR: 1 changeset-validation: name: Validate Changesets runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - uses: dorny/paths-filter@v3 id: changes with: filters: | changesets: - '.changeset/**' - '.github/scripts/validate-changesets.mjs' - uses: actions/setup-node@v4 if: steps.changes.outputs.changesets == 'true' with: node-version: ${{ env.NODE_VERSION }} cache: "npm" - name: Validate changeset package references if: steps.changes.outputs.changesets == 'true' run: | # Validate that changesets only reference public packages # This catches issues like using @tm/cli instead of task-master-ai node .github/scripts/validate-changesets.mjs env: FORCE_COLOR: 1 typecheck: name: Typecheck timeout-minutes: 10 runs-on: ubuntu-latest needs: install steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} - name: Restore node_modules cache id: cache-node-modules uses: actions/cache@v4 with: path: node_modules key: node-modules-${{ runner.os }}-node${{ env.NODE_VERSION }}-${{ hashFiles('package-lock.json') }} - name: Install dependencies if: steps.cache-node-modules.outputs.cache-hit != 'true' run: npm ci timeout-minutes: 5 - name: Typecheck run: npm run turbo:typecheck env: FORCE_COLOR: 1 # Build job to ensure everything compiles build: name: Build runs-on: ubuntu-latest needs: install steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} - name: Restore node_modules cache id: cache-node-modules uses: actions/cache@v4 with: path: node_modules key: node-modules-${{ runner.os }}-node${{ env.NODE_VERSION }}-${{ hashFiles('package-lock.json') }} - name: Install dependencies if: steps.cache-node-modules.outputs.cache-hit != 'true' run: npm ci timeout-minutes: 5 - name: Build run: npm run turbo:build env: NODE_ENV: production FORCE_COLOR: 1 TM_PUBLIC_BASE_DOMAIN: ${{ secrets.TM_PUBLIC_BASE_DOMAIN }} TM_PUBLIC_SUPABASE_URL: ${{ secrets.TM_PUBLIC_SUPABASE_URL }} TM_PUBLIC_SUPABASE_ANON_KEY: ${{ secrets.TM_PUBLIC_SUPABASE_ANON_KEY }} - name: Upload build artifacts uses: actions/upload-artifact@v4 with: name: build-artifacts path: dist/ retention-days: 1 test: name: Test timeout-minutes: 15 runs-on: ubuntu-latest needs: [format-check, typecheck, build, changeset-validation] if: always() && !cancelled() && !contains(needs.*.result, 'failure') steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} - name: Restore node_modules cache id: cache-node-modules uses: actions/cache@v4 with: path: node_modules key: node-modules-${{ runner.os }}-node${{ env.NODE_VERSION }}-${{ hashFiles('package-lock.json') }} - name: Install dependencies if: steps.cache-node-modules.outputs.cache-hit != 'true' run: npm ci timeout-minutes: 5 - name: Download build artifacts uses: actions/download-artifact@v4 with: name: build-artifacts path: dist/ - name: Run Tests run: | npm run test:coverage -- --coverageThreshold '{"global":{"branches":0,"functions":0,"lines":0,"statements":0}}' --detectOpenHandles --forceExit env: NODE_ENV: test CI: true FORCE_COLOR: 1 - name: Upload Test Results if: always() uses: actions/upload-artifact@v4 with: name: test-results path: | test-results coverage junit.xml retention-days: 30

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/eyaltoledano/claude-task-master'

If you have feedback or need assistance with the MCP directory API, please join our Discord server