- Automatic Build: GitHub Actions automatically builds your Docker Compose stack
- Service Health Checks: Waits for PostgreSQL, Redis, and app server to be ready
- Endpoint Testing: Tests all major visualization pages to ensure they load
- Error Detection: Scans logs for critical errors and reports them
- Status Report: Shows green ✅ or red ❌ status on your PR
/- Welcome page/contributions- Contribution metrics/contributors/contribution_types- Contributor type analysis/contributors/behavior- Contributor behavior patterns/chaoss- CHAOSS metrics/codebase- Codebase analysis/affiliation- Organization affiliation data/info- Information and definitions/repo_overview- Repository overview
- Database connectivity
- Redis cache availability
- Application server responsiveness
- Service startup order
Option 1: Using Docker (same as CI)
# Use the same commands as CI
docker compose up --build -d
# Wait for services
docker compose ps
# Test endpoints manually
curl http://localhost:8080/
curl http://localhost:8080/contributions
curl http://localhost:8080/health
# Check logs
docker compose logs app-serverOption 2: Using Podman (recommended for local development)
# Use Podman instead of Docker
podman compose up --build -d
# Wait for services
podman compose ps
# Test endpoints manually (same as Docker)
curl http://localhost:8080/
curl http://localhost:8080/contributions
curl http://localhost:8080/health
# Check logs
podman compose logs app-serverNote: CI always uses Docker, but you can use either Docker or Podman locally. Both should produce same results.
- Check the logs in the GitHub Actions tab
- Look for error patterns in the "Check application logs" step
- Test locally with the same environment
- Fix the issue and push again
Update .github/workflows/pr-build-test.yml to test your new endpoint:
# Add to "Test application endpoints" step
curl -f -s http://localhost:8080/your-new-page > /dev/null- More verbose error messages
- Service status checks
- Database connectivity validation
- Redis connection testing
curl http://localhost:8080/healthReturns:
{
"status": "healthy",
"database": "connected",
"timestamp": "2024-01-15 10:30:00"
}- All services started correctly
- All endpoints returned HTTP 200
- No critical errors in logs
- Application is ready for review
- Service startup failed
- Endpoint returned error (4xx/5xx)
- Critical errors found in logs
- Build or dependency issues
- Tests are currently running
- Wait for completion before reviewing
- Services took too long to start
- Usually indicates resource constraints or configuration issues
- Check Docker resource limits
- PostgreSQL service didn't start properly
- Environment variables might be incorrect
- Check database initialization logs
- Application returned error status
- Check application logs for Python exceptions
- Verify all dependencies are properly installed
- Redis service startup issue
- Password configuration problem
- Check Redis service logs
- Test locally with
docker compose up --buildorpodman compose up --build - Check all pages load without errors
- Review application logs for warnings
- Ensure new dependencies are reflected in
pyproject.toml(new dependencies can be added withuv add)
- Don't ignore failures - they catch real issues
- Check logs thoroughly before asking for help
- Test the fix locally before pushing again
- Consider if new tests are needed for your changes
- Pin specific versions in
pyproject.toml(if needed because a later version causes issues ) - Monitor nightly test results for compatibility
- Update documentation if new env vars are needed
- Test security implications
- Catch build issues early before they reach production
- Ensure all pages load without critical errors
- Validate dependencies work together correctly
- Provide fast feedback to developers
- Maintain application stability across changes
The CI system is designed to give you confidence that your changes work correctly and don't break existing functionality. Use it as a safety net and debugging tool!