11 KiB
CI/CD Pipeline Documentation
Overview
This document describes the comprehensive CI/CD pipeline for the United Tattoo website, built with Next.js and deployed to Cloudflare Workers via Gitea Actions.
🚀 Pipeline Architecture
Workflow Files
enhanced-ci.yaml- Main CI/CD pipeline with quality gatesdeploy.yaml- Deployment pipeline with manual triggerssecurity.yaml- Security scanning and dependency checksperformance.yaml- Performance monitoring and Lighthouse audits
Pipeline Stages
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Quality Gates │ │ Build & Test │ │ Deploy │
│ │ │ │ │ │
│ • Lint & Format │───▶│ • Build App │───▶│ • Preview │
│ • Security Scan │ │ • Unit Tests │ │ • Production │
│ • Type Check │ │ • Coverage │ │ • Health Check │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Post-Deploy │ │ Performance │ │ Monitoring │
│ │ │ │ │ │
│ • Lighthouse │ │ • Bundle Size │ │ • Core Web Vitals│
│ • SEO Check │ │ • Budget Check │ │ • Security Headers│
│ • Health Check │ │ • Performance │ │ • Uptime Monitor │
└─────────────────┘ └─────────────────┘ └─────────────────┘
📋 Workflow Details
1. Enhanced CI Pipeline (enhanced-ci.yaml)
Triggers:
- Push to
main,master, orci-run-*branches - Pull requests to
main/master - Manual workflow dispatch
Jobs:
Quality Gates
- Code Quality: ESLint, TypeScript check, format validation
- Security Scan: Dependency audit, license check, outdated packages
- Tests: Unit tests with coverage reporting
Build & Deploy
- Build: Next.js build with OpenNext Cloudflare adapter
- Deploy Preview: Automatic deployment for PRs
- Deploy Production: Deployment to production environment
Post-Deployment
- Lighthouse CI: Performance audit
- SEO Check: Metadata validation
- Security Headers: Security configuration check
2. Deployment Pipeline (deploy.yaml)
Features:
- Manual deployment triggers
- Environment selection (preview/production)
- Emergency deployment options
- Rollback capability
- Health checks and verification
Deployment Flow:
- Pre-deployment checks (optional)
- Build application
- Database migrations (production only)
- Deploy to Cloudflare
- Health check verification
- Performance validation
- SEO verification
3. Security Pipeline (security.yaml)
Security Checks:
- Dependency Scan: npm audit, license check, outdated packages
- Code Security: ESLint security rules, hardcoded secrets check
- Container Security: Dockerfile security analysis
- Security Report: Comprehensive security status report
Scheduled Runs:
- Daily security scans at 3 AM UTC
- Automatic vulnerability detection
- License compliance checking
4. Performance Pipeline (performance.yaml)
Performance Monitoring:
- Lighthouse Audit: Performance, accessibility, SEO scores
- Bundle Analysis: Bundle size monitoring, budget enforcement
- Core Web Vitals: LCP, FID, CLS monitoring
- SEO Performance: Meta tags, structured data validation
Scheduled Runs:
- Daily performance checks at 4 AM UTC
- Performance regression detection
- SEO compliance monitoring
🔧 Configuration
Environment Variables
Required:
CLOUDFLARE_ACCOUNT_ID=5cee6a21cea282a9c89d5297964402e7
CLOUDFLARE_API_TOKEN=your-cloudflare-api-token
Optional:
TOTAL_STATIC_MAX_BYTES=3000000
MAX_ASSET_BYTES=1500000
LHCI_GITHUB_APP_TOKEN=your-lighthouse-ci-token
Secrets
Configure these in your Gitea repository settings:
CLOUDFLARE_API_TOKEN- Cloudflare API token with Pages permissionsLHCI_GITHUB_APP_TOKEN- Lighthouse CI token (optional)
Variables
Set these in your Gitea repository variables:
CLOUDFLARE_ACCOUNT_ID- Your Cloudflare account IDTOTAL_STATIC_MAX_BYTES- Maximum total static assets sizeMAX_ASSET_BYTES- Maximum individual asset size
📊 Quality Gates
Code Quality
- ✅ ESLint passes with no errors
- ✅ TypeScript compilation successful
- ✅ Code formatting consistent
- ✅ No security vulnerabilities (critical/high)
Performance
- ✅ Lighthouse Performance score ≥ 80
- ✅ Lighthouse SEO score ≥ 90
- ✅ Bundle size under budget limits
- ✅ Core Web Vitals within thresholds
Security
- ✅ No critical dependency vulnerabilities
- ✅ Approved licenses only
- ✅ No hardcoded secrets
- ✅ Security headers present
🚀 Deployment Process
Automatic Deployments
Pull Requests:
- Automatic preview deployment
- Quality gates must pass
- Performance checks run
- Security scan executed
Main Branch:
- Automatic production deployment
- All quality gates enforced
- Database migrations (if needed)
- Health checks performed
Manual Deployments
Via Gitea UI:
- Go to Actions → Deploy
- Select environment (preview/production)
- Choose deployment options
- Monitor deployment progress
Via CLI:
# Deploy to preview
npm run deploy:preview
# Deploy to production
npm run deploy:production
Emergency Deployments
Skip Tests:
- Use
skip_tests: trueoption - Bypasses quality gates
- Use only for critical fixes
Force Deploy:
- Use
force_deploy: trueoption - Deploys even if checks fail
- Use with extreme caution
📈 Monitoring & Reporting
Performance Monitoring
Lighthouse Scores:
- Performance: Target ≥ 80
- Accessibility: Target ≥ 90
- Best Practices: Target ≥ 80
- SEO: Target ≥ 90
Core Web Vitals:
- LCP (Largest Contentful Paint): Target < 2.5s
- FID (First Input Delay): Target < 100ms
- CLS (Cumulative Layout Shift): Target < 0.1
Bundle Size:
- Total static assets: Target < 3MB
- Individual assets: Target < 1.5MB
Security Monitoring
Dependency Security:
- Critical vulnerabilities: 0 allowed
- High vulnerabilities: Monitor closely
- Moderate vulnerabilities: Review regularly
License Compliance:
- Approved licenses: MIT, Apache-2.0, BSD-2-Clause, BSD-3-Clause, ISC, Unlicense, CC0-1.0
- All other licenses: Manual review required
SEO Monitoring
Required Elements:
- ✅ Open Graph tags present
- ✅ Twitter Card tags present
- ✅ JSON-LD structured data
- ✅ Canonical URLs
- ✅ Meta descriptions
Performance:
- ✅ Page load time < 2s
- ✅ Mobile-friendly
- ✅ HTTPS enabled
- ✅ Security headers present
🛠️ Local Development
Pre-commit Hooks
Install pre-commit hooks:
npm install -g husky lint-staged
npx husky install
npx husky add .husky/pre-commit "npx lint-staged"
Local Testing
Run Quality Checks:
npm run ci:lint # ESLint
npm run ci:typecheck # TypeScript
npm run ci:test # Unit tests
npm run ci:build # Build check
Run Security Checks:
npm run security:audit # Dependency audit
npm run security:outdated # Check outdated packages
Run Performance Checks:
npm run performance:bundle # Bundle analysis
npm run performance:lighthouse # Lighthouse audit
Local Deployment
Preview Deployment:
npm run pages:build
npm run preview
Production Deployment:
CLOUDFLARE_ACCOUNT_ID=your-account-id npm run deploy:production
🔍 Troubleshooting
Common Issues
Build Failures:
- Check Node.js version (requires 20.x)
- Verify all dependencies installed
- Check for TypeScript errors
- Review ESLint configuration
Deployment Failures:
- Verify Cloudflare credentials
- Check account ID configuration
- Review build artifacts
- Check network connectivity
Performance Issues:
- Review bundle size limits
- Check for large dependencies
- Optimize images and assets
- Review Lighthouse recommendations
Security Issues:
- Update vulnerable dependencies
- Review license compliance
- Check for hardcoded secrets
- Verify security headers
Debug Commands
Check Pipeline Status:
# View recent workflow runs
gh run list
# View specific workflow
gh run view <run-id>
# Download artifacts
gh run download <run-id>
Local Debugging:
# Build with verbose output
npm run ci:build --verbose
# Run tests with coverage
npm run ci:test --coverage
# Check bundle size
npm run ci:budgets
📚 Best Practices
Code Quality
- Write meaningful commit messages
- Keep PRs small and focused
- Add tests for new features
- Follow TypeScript best practices
- Use ESLint and Prettier consistently
Security
- Regularly update dependencies
- Use environment variables for secrets
- Review security scan results
- Follow OWASP guidelines
- Implement proper access controls
Performance
- Monitor bundle sizes
- Optimize images and assets
- Use lazy loading appropriately
- Implement proper caching
- Monitor Core Web Vitals
Deployment
- Test in preview environment first
- Use feature flags for gradual rollouts
- Monitor deployment health
- Have rollback plan ready
- Document deployment procedures
🔄 Continuous Improvement
Pipeline Optimization
- Monitor pipeline execution times
- Optimize build processes
- Reduce unnecessary steps
- Improve error handling
- Add more comprehensive tests
Monitoring Enhancement
- Add more performance metrics
- Implement alerting systems
- Create dashboards
- Track deployment success rates
- Monitor user experience metrics
Security Hardening
- Implement additional security scans
- Add compliance checks
- Enhance vulnerability detection
- Implement security policies
- Regular security reviews
📞 Support
Getting Help
- Check workflow logs in Gitea Actions
- Review error messages carefully
- Consult this documentation
- Check GitHub Issues
- Contact development team
Reporting Issues
- Use GitHub Issues for bugs
- Provide detailed error messages
- Include relevant logs
- Describe reproduction steps
- Suggest potential solutions
Last Updated: 2025-10-09
Version: 1.0.0
Maintainer: Development Team