Skip to main content
info

This documentation is automatically synchronized from the claude-hub repository. Last updated: 2025-06-01

CI/CD Setup Documentation

This document outlines the CI/CD pipeline setup for the Claude GitHub Webhook project.

Overview

The project uses GitHub Actions for CI/CD with multiple workflows:

  • Main CI Pipeline - Testing, linting, and Docker builds for PRs and pushes
  • Deployment Pipeline - Building and pushing images, deployment (main branch only)
  • Security Scans - Daily security scanning and vulnerability detection
  • Dependabot - Automated dependency updates

Workflows

1. Main CI Pipeline (.github/workflows/ci.yml)

Triggers:

  • Push to main or develop branches
  • Pull requests to main or develop branches

Jobs:

Test & Lint Job

  • Sets up Node.js 20
  • Installs dependencies with npm ci
  • Runs ESLint for code quality
  • Executes all test suites (unit, integration, e2e)
  • Generates code coverage reports
  • Uploads coverage to Codecov

Security Job

  • Runs npm audit for dependency vulnerabilities
  • Performs Snyk security scanning (if token configured)
  • Scans for high-severity vulnerabilities

Docker Job

  • Builds both main webhook and Claude Code Docker images
  • Tests container startup and health endpoints
  • Uses Docker BuildKit with GitHub Actions caching

Note: When all CI jobs complete successfully on a PR, the webhook service automatically triggers a comprehensive Claude Code review of the pull request.

2. Deployment Pipeline (.github/workflows/deploy.yml)

Triggers:

  • Push to main branch only

Jobs:

Build & Push Job

  • Builds and pushes images to GitHub Container Registry
  • Tags images with branch name, SHA, and latest
  • Uses Docker BuildKit with GitHub Actions caching

Deploy Job

  • Placeholder for deployment to staging environment
  • Runs only after successful build and push

3. Security Scans (.github/workflows/security.yml)

Triggers:

  • Daily at 2 AM UTC (scheduled)
  • Push to main branch
  • Pull requests to main branch

Jobs:

Dependency Scan

  • Checks for known vulnerabilities in dependencies
  • Runs npm audit with moderate severity threshold

Secret Scan

  • Uses TruffleHog to scan for leaked secrets
  • Scans entire repository history

CodeQL Analysis

  • GitHub's semantic code analysis
  • Scans JavaScript/Node.js code for security issues
  • Results appear in Security tab

4. Dependabot (.github/dependabot.yml)

Automated Updates:

  • npm dependencies - Weekly updates
  • Docker base images - Weekly updates
  • GitHub Actions - Weekly updates

Configuration:

  • Auto-assigns reviewers
  • Creates up to 10 open PRs at a time
  • Uses conventional commit prefixes

Testing Strategy

Test Types

  • Unit Tests - Individual component testing
  • Integration Tests - Service interaction testing
  • E2E Tests - End-to-end workflow testing

Test Environment

  • Uses NODE_ENV=test
  • Mock authentication tokens
  • Isolated test containers

Coverage Requirements

  • Unit tests must maintain >60% coverage
  • Critical paths require 100% coverage
  • Coverage reports uploaded to Codecov

Code Quality

Linting (ESLint)

  • Enforces consistent code style
  • Checks for common errors and anti-patterns
  • Configured for Node.js and Jest environments

Formatting (Prettier)

  • Consistent code formatting
  • Automatic fix available via npm run format

Pre-commit Hooks

  • Runs linting and formatting checks
  • Prevents commits with quality issues

Security Measures

Vulnerability Scanning

  • Daily dependency scans
  • Secret detection in code
  • SAST analysis with CodeQL

Audit Thresholds

  • Fails on moderate+ severity vulnerabilities
  • Auto-fix available for compatible updates

Container Security

  • Multi-stage Docker builds
  • Non-root user execution
  • Minimal base images

Environment Variables

Required for CI

NODE_ENV=test
BOT_USERNAME=@TestBot
GITHUB_WEBHOOK_SECRET=test-secret
GITHUB_TOKEN=test-token

Optional for Enhanced Features

SNYK_TOKEN=xxx          # For Snyk security scanning
CODECOV_TOKEN=xxx # For coverage reporting

Docker Images

Main Webhook Image

  • Base: node:20-alpine
  • Registry: ghcr.io/your-org/claude-github-webhook
  • Tags: latest, main-{sha}, branch names

Claude Code Runner Image

  • Base: Custom Ubuntu with Claude Code CLI
  • Registry: ghcr.io/your-org/claude-github-webhook-claudecode
  • Purpose: Isolated Claude command execution

Local Development

Setup Commands

# Install dependencies
npm ci

# Setup development tools
npm run setup:dev

# Run tests
npm test

# Run linting
npm run lint

# Run formatting
npm run format

Pre-push Checklist

  • All tests pass: npm test
  • No linting errors: npm run lint:check
  • Code formatted: npm run format:check
  • No security issues: npm run security:audit

Deployment

Staging

  • Automatic deployment on main branch
  • Uses latest container images
  • Environment-specific configuration

Production

  • Manual approval required
  • Blue-green deployment strategy
  • Health checks and rollback capability

Monitoring

CI Metrics

  • Build success rate
  • Test execution time
  • Coverage trends

Security Metrics

  • Vulnerability count
  • MTTR for security fixes
  • Dependency freshness

Troubleshooting

Common CI Issues

Tests Failing

  1. Check environment variables are set correctly
  2. Verify dependencies are properly mocked
  3. Review test logs for specific failures

Docker Build Failures

  1. Check Dockerfile syntax
  2. Verify base image availability
  3. Review build context and .dockerignore

Security Scan Failures

  1. Review vulnerability details
  2. Update dependencies if possible
  3. Add exceptions for false positives

Getting Help

  • Check GitHub Actions logs
  • Review error messages and stack traces
  • Consult documentation in /docs/ directory