Some checks failed
API Docs (Node.js Express) / test (18) (push) Failing after 22s
API Docs (Node.js Express) / test (20) (push) Failing after 22s
API Docs (Node.js Express) / build (push) Has been skipped
API Docs (Node.js Express) / security (push) Has been skipped
LabFusion CI/CD Pipeline / api-gateway (push) Failing after 4m53s
Docker Build and Push / build-and-push (push) Failing after 3m31s
Docker Build and Push / security-scan (push) Has been skipped
API Docs (Node.js Express) / test (16) (push) Failing after 3m7s
API Gateway (Java Spring Boot) / test (17) (push) Failing after 7m42s
API Gateway (Java Spring Boot) / test (21) (push) Failing after 5m11s
API Gateway (Java Spring Boot) / build (push) Has been skipped
API Gateway (Java Spring Boot) / security (push) Has been skipped
LabFusion CI/CD Pipeline / service-adapters (push) Failing after 6m30s
LabFusion CI/CD Pipeline / api-docs (push) Failing after 10s
LabFusion CI/CD Pipeline / frontend (push) Failing after 4m54s
LabFusion CI/CD Pipeline / integration-tests (push) Has been skipped
LabFusion CI/CD Pipeline / security-scan (push) Has been skipped
Frontend (React) / test (16) (push) Failing after 4m58s
Frontend (React) / test (18) (push) Failing after 4m58s
Frontend (React) / test (20) (push) Failing after 4m58s
Frontend (React) / build (push) Has been skipped
Frontend (React) / security (push) Has been skipped
Integration Tests / integration-tests (push) Failing after 35s
Integration Tests / performance-tests (push) Has been skipped
Service Adapters (Python FastAPI) / test (3.1) (push) Failing after 15s
Service Adapters (Python FastAPI) / test (3.11) (push) Failing after 5m23s
Service Adapters (Python FastAPI) / test (3.12) (push) Failing after 6m18s
Service Adapters (Python FastAPI) / test (3.9) (push) Failing after 6m18s
Docker Build and Push / deploy-staging (push) Has been skipped
Service Adapters (Python FastAPI) / build (push) Has been skipped
Service Adapters (Python FastAPI) / security (push) Has been skipped
Docker Build and Push / deploy-production (push) Has been skipped
Frontend (React) / lighthouse (push) Has been skipped
6.4 KiB
6.4 KiB
LabFusion CI/CD Pipeline Documentation
Overview
LabFusion uses Gitea Actions for continuous integration and deployment. The pipeline is designed to handle a polyglot microservices architecture with Java Spring Boot, Python FastAPI, Node.js Express, and React.
Pipeline Structure
Main CI Pipeline (ci.yml)
- Trigger: Push to
main/developbranches, pull requests - Services: All services (API Gateway, Service Adapters, API Docs, Frontend)
- Features: Testing, code quality, security scanning, integration tests
Service-Specific Pipelines
API Gateway (api-gateway.yml)
- Language: Java Spring Boot
- Testing: Unit tests, code quality (SpotBugs, Checkstyle, PMD)
- Coverage: JaCoCo code coverage reporting
- Matrix: Java 17, 21
- Security: Trivy vulnerability scanning
Service Adapters (service-adapters.yml)
- Language: Python FastAPI
- Testing: Unit tests, code quality (Black, isort, flake8, mypy)
- Coverage: pytest-cov coverage reporting
- Matrix: Python 3.9, 3.10, 3.11, 3.12
- Security: Bandit, Safety, Trivy scanning
API Docs (api-docs.yml)
- Language: Node.js Express
- Testing: Jest unit tests
- Coverage: Jest coverage reporting
- Matrix: Node.js 16, 18, 20
- Security: npm audit, Trivy scanning
Frontend (frontend.yml)
- Language: React
- Testing: Jest unit tests, Lighthouse CI
- Coverage: Jest coverage reporting
- Matrix: Node.js 16, 18, 20
- Performance: Lighthouse performance testing
- Security: npm audit, Trivy scanning
Integration Tests (integration-tests.yml)
- Services: PostgreSQL, Redis
- Testing: End-to-end integration tests
- Performance: k6 performance testing
- Coverage: Complete service interaction testing
Configuration
Environment Variables
No External Dependencies
- Local Testing: All Docker images built locally
- No Registry: No external container registry required
- Self-Contained: Pipelines run without external dependencies
Service Configuration
API Gateway
- Port: 8080
- Health Check:
/actuator/health - Dependencies: Maven, JDK 17/21
- Quality Tools: SpotBugs, Checkstyle, PMD, JaCoCo
Service Adapters
- Port: 8000
- Health Check:
/health - Dependencies: Python 3.9-3.12, pip
- Quality Tools: Black, isort, flake8, mypy, Bandit, Safety
API Docs
- Port: 3000
- Health Check:
/health - Dependencies: Node.js 16-20, npm
- Quality Tools: ESLint, Jest
Frontend
- Port: 3001
- Health Check: Root path
/ - Dependencies: Node.js 16-20, npm
- Quality Tools: ESLint, Jest, Lighthouse CI
Pipeline Features
Code Quality
- Linting: ESLint, flake8, Checkstyle
- Formatting: Black, isort, Prettier
- Type Checking: mypy, TypeScript
- Security: Bandit, Safety, npm audit, Trivy
- Coverage: Minimum 80% code coverage required
Testing
- Unit Tests: All services
- Integration Tests: End-to-end service communication
- Performance Tests: k6 load testing
- Lighthouse Tests: Frontend performance and accessibility
Security
- Vulnerability Scanning: Trivy for all Docker images
- Dependency Scanning: npm audit, Maven security checks
- Code Security: Bandit for Python, ESLint security rules
Caching
- Maven: ~/.m2 directory
- npm: node_modules and package-lock.json
- pip: ~/.cache/pip
- Docker: Multi-stage build caching
Multi-Platform Support
- Architectures: linux/amd64, linux/arm64
- Matrix Testing: Multiple language versions
- Cross-Platform: Docker multi-platform builds
Docker Images
Local Testing
- Build: Docker images built locally for testing
- Tags: Simple test tags (e.g.,
api-gateway:test) - Purpose: Integration testing and validation
- No Registry: Images not pushed to external registry
Monitoring and Reporting
Test Reports
- Unit Tests: JUnit XML reports
- Coverage: Codecov integration
- Performance: Lighthouse CI reports
- Security: SARIF format vulnerability reports
Notifications
- Success: Deployment notifications
- Failure: Error notifications with details
- Security: Vulnerability alerts
Troubleshooting
Common Issues
Build Failures
- Dependency Issues: Check package.json, requirements.txt, pom.xml
- Version Conflicts: Update to compatible versions
- Cache Issues: Clear GitHub Actions cache
Test Failures
- Unit Tests: Check test files and assertions
- Integration Tests: Verify service health endpoints
- Performance Tests: Check resource limits and timeouts
Security Issues
- Vulnerabilities: Update dependencies
- Code Issues: Fix security warnings
- Image Issues: Update base images
Debugging
- Logs: Check GitHub Actions logs
- Artifacts: Download test reports and coverage
- Local Testing: Run tests locally before pushing
Best Practices
Code Quality
- Write comprehensive tests
- Maintain high code coverage
- Follow linting rules
- Use meaningful commit messages
Security
- Keep dependencies updated
- Scan for vulnerabilities regularly
- Use secure base images
- Implement proper authentication
Performance
- Optimize Docker images
- Use multi-stage builds
- Implement proper caching
- Monitor resource usage
Deployment
- Test in staging first
- Use blue-green deployments
- Implement rollback procedures
- Monitor production health
Future Enhancements
Planned Features
- Kubernetes: Helm charts for deployment
- Monitoring: Prometheus and Grafana integration
- Logging: Centralized logging with ELK stack
- Database: Automated migration testing
- Notifications: Slack/Teams integration
Performance Improvements
- Parallel Testing: Run tests in parallel
- Selective Testing: Only test changed services
- Caching: Improved Docker layer caching
- Resource Optimization: Better resource allocation
Support
For issues with the CI/CD pipeline:
- Check the GitHub Actions logs
- Review the troubleshooting section
- Check service-specific documentation
- Contact the development team