Skip to content
graphql-inspector-ci logo

GraphQL Inspector - CI/CD Integration

graphql-inspector-ci

Use when setting up GraphQL Inspector in CI/CD pipelines, GitHub Actions, or GitLab CI for automated schema validation.

SKILL.md

Full skill instructions

GraphQL Inspector - CI/​CD Integration

Expert knowledge of integrating GraphQL Inspector into continuous integration and deployment pipelines for automated schema and operation validation.

Overview

GraphQL Inspector provides multiple integration options for CI/​CD, from simple CLI commands to dedicated GitHub Apps and Actions. This skill covers all integration patterns for automated GraphQL quality enforcement.

GitHub App

The official GitHub App provides the richest integration:

Features

  • Automatic schema diff on pull requests
  • Comment with breaking changes summary
  • Block merges on breaking changes
  • Compare against base branch automatically

Installation

  1. Install from GitHub Marketplace
  2. Configure .github/​graphql-inspector.yaml:
schema: 'schema.graphql'
branch: 'main'
endpoint: 'https://api.example.com/​graphql'
diff: true
notifications:
  slack: ${{ secrets.SLACK_WEBHOOK }}

GitHub Actions

Basic Schema Diff

name: GraphQL Schema Check
user-invocable: false
on:
  pull_request:
    paths:
      - 'schema.graphql'
      - '**/​*.graphql'

jobs:
  schema-check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/​checkout@v4
        with:
          fetch-depth: 0

      - name: Setup Node.js
        uses: actions/​setup-node@v4
        with:
          node-version: '20'

      - name: Install GraphQL Inspector
        run: npm install -g @graphql-inspector/​cli

      - name: Check for breaking changes
        run: |
          graphql-inspector diff \
            'git:origin/​main:schema.graphql' \
            'schema.graphql'

Complete Validation Pipeline

name: GraphQL Validation
user-invocable: false
on:
  pull_request:
    paths:
      - '**/​*.graphql'
      - 'src/​**/​*.tsx'
      - 'schema.graphql'

jobs:
  validate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/​checkout@v4
        with:
          fetch-depth: 0

      - name: Setup Node.js
        uses: actions/​setup-node@v4
        with:
          node-version: '20'

      - name: Install dependencies
        run: npm install -g @graphql-inspector/​cli

      - name: Schema Diff
        id: diff
        run: |
          graphql-inspector diff \
            'git:origin/​main:schema.graphql' \
            'schema.graphql' \
            --onlyBreaking
        continue-on-error: true

      - name: Validate Operations
        run: |
          graphql-inspector validate \
            'src/​**/​*.graphql' \
            'schema.graphql' \
            --maxDepth 10

      - name: Audit Operations
        run: |
          graphql-inspector audit \
            'src/​**/​*.graphql'

      - name: Comment on PR
        if: steps.diff.outcome == 'failure'
        uses: actions/​github-script@v7
        with:
          script: |
            github.rest.issues.createComment({
              issue_number: context.issue.number,
              owner: context.repo.owner,
              repo: context.repo.repo,
              body: '⚠️ Breaking GraphQL schema changes detected!'
            })

Matrix Strategy for Multiple Schemas

name: Multi-Schema Validation
user-invocable: false
on: pull_request

jobs:
  validate:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        service:
          - { name: 'users', schema: 'services/​users/​schema.graphql' }
          - { name: 'orders', schema: 'services/​orders/​schema.graphql' }
          - { name: 'products', schema: 'services/​products/​schema.graphql' }

    steps:
      - uses: actions/​checkout@v4
        with:
          fetch-depth: 0

      - name: Install GraphQL Inspector
        run: npm install -g @graphql-inspector/​cli

      - name: Diff ${{ matrix.service.name }}
        run: |
          graphql-inspector diff \
            'git:origin/​main:${{ matrix.service.schema }}' \
            '${{ matrix.service.schema }}'

GitLab CI

Basic Configuration

stages:
  - validate

graphql-diff:
  stage: validate
  image: node:20
  before_script:
    - npm install -g @graphql-inspector/​cli
  script:
    - graphql-inspector diff "git:origin/​main:schema.graphql" schema.graphql
  rules:
    - changes:
        - "**/​*.graphql"

graphql-validate:
  stage: validate
  image: node:20
  before_script:
    - npm install -g @graphql-inspector/​cli
  script:
    - graphql-inspector validate 'src/​**/​*.graphql' schema.graphql
  rules:
    - changes:
        - "**/​*.graphql"
        - "src/​**/​*.tsx"

Merge Request Comments

graphql-diff:
  stage: validate
  image: node:20
  script:
    - npm install -g @graphql-inspector/​cli
    - |
      OUTPUT=$(graphql-inspector diff "git:origin/​main:schema.graphql" schema.graphql 2>&1 || true)
      if [[ "$OUTPUT" == *"Breaking"* ]]; then
        curl --request POST \
          --header "PRIVATE-TOKEN: $GITLAB_TOKEN" \
          --data "body=⚠️ Breaking GraphQL changes detected" \
          "$CI_API_V4_URL/​projects/​$CI_PROJECT_ID/​merge_requests/​$CI_MERGE_REQUEST_IID/​notes"
      fi

CircleCI

version: 2.1

jobs:
  graphql-check:
    docker:
      - image: cimg/​node:20.0
    steps:
      - checkout
      - run:
          name: Install GraphQL Inspector
          command: npm install -g @graphql-inspector/​cli
      - run:
          name: Schema Diff
          command: |
            graphql-inspector diff \
              'git:origin/​main:schema.graphql' \
              'schema.graphql'
      - run:
          name: Validate Operations
          command: |
            graphql-inspector validate \
              'src/​**/​*.graphql' \
              'schema.graphql'

workflows:
  validate:
    jobs:
      - graphql-check

Configuration File

Create .graphql-inspector.yaml for all commands:

# Schema configuration
schema:
  path: './​schema.graphql'
  # Or for federation
  # federation: true

# Diff configuration
diff:
  rules:
    - suppressRemovalOfDeprecatedField
  failOnBreaking: true
  failOnDangerous: false
  notifications:
    slack: ${SLACK_WEBHOOK_URL}

# Validate configuration
validate:
  documents: './​src/​**/​*.graphql'
  maxDepth: 10
  maxAliasCount: 5
  maxComplexityScore: 100

# Audit configuration
audit:
  documents: './​src/​**/​*.graphql'

Advanced Patterns

Caching Dependencies

# GitHub Actions with caching
- name: Cache npm
  uses: actions/​cache@v4
  with:
    path: ~/​.npm
    key: ${{ runner.os }}-graphql-inspector

- name: Install GraphQL Inspector
  run: npm install -g @graphql-inspector/​cli

Slack Notifications

- name: Notify Slack on breaking changes
  if: failure()
  uses: slackapi/​slack-github-action@v1
  with:
    payload: |
      {
        "text": "⚠️ Breaking GraphQL changes in ${{ github.repository }}",
        "attachments": [{
          "color": "danger",
          "title": "Pull Request #${{ github.event.pull_request.number }}",
          "title_link": "${{ github.event.pull_request.html_url }}"
        }]
      }
  env:
    SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}

Required Status Checks

Configure repository settings:

  1. Go to Settings → Branches → Branch protection rules
  2. Enable "Require status checks to pass"
  3. Add "GraphQL Schema Check" job as required

Remote Schema Comparison

- name: Diff against production
  run: |
    graphql-inspector diff \
      'https://api.production.example.com/​graphql' \
      'schema.graphql'
  env:
    GRAPHQL_INSPECTOR_HEADERS: |
      Authorization: Bearer ${{ secrets.PROD_API_TOKEN }}

Best Practices

  1. Fail fast - Use --onlyBreaking to focus on critical issues
  2. Cache installation - Speed up CI with npm caching
  3. Required checks - Make schema validation a required check
  4. Branch protection - Block merges with breaking changes
  5. Notifications - Alert team on breaking changes
  6. Documentation - Link to migration guides in comments
  7. Multiple environments - Validate against staging and production
  8. Parallel jobs - Run diff, validate, and audit in parallel

Troubleshooting

"Permission denied" for git refs

- uses: actions/​checkout@v4
  with:
    fetch-depth: 0  # Fetch full history

"Schema not found" in CI

  • Verify file path is correct in repository
  • Check that schema is committed (not gitignored)
  • Use absolute paths if relative paths fail

Different results local vs CI

  • Ensure same GraphQL Inspector version
  • Check Node.js version matches
  • Verify git refs are accessible

When to Use This Skill

  • Setting up automated schema validation
  • Configuring breaking change detection in CI
  • Building GraphQL quality gates
  • Integrating with GitHub/​GitLab workflows
  • Creating PR comments for schema changes
  • Blocking deployments with breaking changes

More DevOps & CI/CD skills

Project scaffolding, deployment configuration, and CI/CD setup for Google ADK agents.

6K 472.6K
View

Set up tracing, logging, and monitoring for deployed ADK agents across Cloud Trace, BigQuery, and third-party platforms.

6K 472.6K
View

Enterprise Azure infrastructure architect generating Bicep or Terraform from workload descriptions.

1.5K 454.3K
View
azure-kubernetes logo
DevOps & CI/CD

azure-kubernetes

Plan and configure production-ready Azure Kubernetes Service clusters with Day-0 and Day-1 best practices.

1.5K 447.1K
View

Raw mechanical interfaces fusing Swiss typographic print with military terminal aesthetics. Rigid grids, extreme type scale contrast, utilitarian color, analog degradation effects. For data-heavy dashboards, portfolios, or editorial sites that need to feel like declassified blueprints.

92.7K 354.9K
View
just-scrape logo
DevOps & CI/CD

just-scrape

Web search, scraping, extraction, crawling, and monitoring via ScrapeGraph AI CLI.

69 245K
View

Skill for working with Firebase Hosting (Classic). Use this when you want to deploy static web apps, Single Page Apps (SPAs), or simple microservices. Do NOT use for Firebase App Hosting.

462 159.7K
View

Deploy and manage web apps with Firebase App Hosting. Use this skill when deploying Next.js/Angular apps with backends.

462 159.1K
View
deploy-to-vercel logo
DevOps & CI/CD

deploy-to-vercel

Deploy applications and websites to Vercel. Use when the user requests deployment actions like "deploy my app", "deploy and give me the link", "push this live", or "create a preview deployment".

31.9K 146.6K
View
programmatic-seo logo
DevOps & CI/CD

programmatic-seo

Build SEO-optimized pages at scale using templates, data, and proven playbook patterns.

53.3K 140.1K
View

Design and build isolated, reusable Convex backend components with clear boundaries and app-facing wrappers.

63 123.5K
View

Deploy and manage projects on Vercel using token-based authentication. Use when working with Vercel CLI using access tokens rather than interactive login — e.g. "deploy to vercel", "set up vercel", "add environment variables to vercel".

31.9K 116.1K
View

Coding & apps AI tools

Opus Clip logo
Coding & apps

Opus Clip

Opus.ai: Revolutionize Your Web Experience

Free
View
Imagica logo
Coding & apps

Imagica

Build a no-code AI app in minutes.

Freemium
View
E
Coding & apps

Emergent.sh

An IDE for code migration from legacy to modern frameworks through coding agents.

Freemium
View
Wonder Dynamics logo
Coding & apps

Wonder Dynamics

Automate CGI animation in live-action scenes

Paid
View
M
Coding & apps

Mixo

Launch a website in seconds with AI.

Paid
View
AI Code Convert logo
Coding & apps

AI Code Convert

Streamline Your Coding Experience with AI Code Helper

Free
View