github-actions-ci-workflow
GitHub Actions CI Workflow
Set up complete GitHub Actions workflows for continuous integration and deployment of worldbuilding applications.
Overview
To configure comprehensive CI/CD pipelines with GitHub Actions:
- Analyze the project structure and dependencies
- Generate workflow files for lint, test, build, and deploy stages
- Configure caching strategies for node_modules, Next.js cache, and build artifacts
- Add preview deployment with automatic URL comments on pull requests
- Set up environment-specific deployment targets
Workflow Structure
Create the following workflow files in .github/workflows/:
CI Workflow (ci.yml)
To set up continuous integration:
- Configure triggers for push to main/master and pull requests
- Set up job matrix for multiple Node.js versions if needed
- Add checkout, dependency installation with caching
- Run linting (ESLint, Prettier, type checking)
- Execute test suites with coverage reporting
- Build the application to verify no build errors
- Upload build artifacts for deployment jobs
Deploy Workflow (deploy.yml)
To set up continuous deployment:
- Trigger on push to main/master branch
- Download build artifacts from CI workflow
- Deploy to target environment (Vercel, Netlify, AWS, etc.)
- Set environment variables and secrets
- Notify on deployment success/failure
Preview Deployment (preview.yml)
To set up preview deployments for pull requests:
- Trigger on pull_request events
- Build and deploy to preview environment
- Generate unique preview URL
- Comment preview URL on pull request using GitHub API
- Clean up preview deployments when PR is closed
Caching Strategy
To optimize workflow performance:
- Cache
node_moduleswith dependency lock file as cache key - Cache Next.js build cache (
.next/cache) for faster builds - Cache testing artifacts and coverage reports
- Use
actions/cache@v3with appropriate cache keys - Implement cache restoration fallbacks for partial matches
Resources
Consult references/github-actions-best-practices.md for workflow optimization patterns and security best practices.
Use scripts/generate_ci_workflow.py to scaffold workflow files based on detected project configuration.
Reference assets/workflow-templates/ for starter templates for common frameworks (Next.js, React, Node.js).
Implementation Steps
To implement complete CI/CD with GitHub Actions:
-
Detect Project Configuration
- Identify framework (Next.js, Vite, CRA, etc.)
- Detect package manager (npm, yarn, pnpm)
- Find test runner (Jest, Vitest, Playwright)
- Check for linting configuration
-
Generate Workflow Files
- Use
scripts/generate_ci_workflow.pywith detected configuration - Customize jobs based on project requirements
- Add matrix builds if testing multiple environments
- Use
-
Configure Secrets and Variables
- Document required secrets in README or workflow comments
- Set up environment-specific variables
- Configure deployment credentials
-
Add Preview Deployments
- Generate preview workflow with URL commenting
- Configure preview environment provider
- Set up cleanup automation
-
Optimize Caching
- Implement multi-level caching strategy
- Use cache keys based on lock files
- Add cache restoration logic
-
Test and Validate
- Push workflows to repository
- Create test PR to verify preview deployments
- Check workflow execution times and optimize
Advanced Features
To add advanced CI/CD capabilities:
- Parallel Jobs: Split test suites across multiple jobs for faster execution
- Conditional Deployments: Deploy only specific paths or when conditions are met
- Status Checks: Require CI passing before merge
- Deployment Gates: Add manual approval steps for production deployments
- Performance Monitoring: Integrate Lighthouse CI or bundle analysis
- Dependency Updates: Automate dependency updates with Dependabot integration
Framework-Specific Configuration
Next.js Applications
To optimize for Next.js:
- Cache
.next/cachedirectory for faster builds - Set
NEXT_TELEMETRY_DISABLED=1to disable telemetry - Use
next buildandnext exportfor static exports - Configure ISR revalidation for preview deployments
Full-Stack Applications
To handle full-stack deployments:
- Set up separate jobs for frontend and backend
- Configure database migrations in deployment workflow
- Run integration tests against preview environment
- Coordinate deployment order (backend first, then frontend)
Deployment Providers
Consult references/deployment-providers.md for platform-specific configuration:
- Vercel: Use vercel-action with project configuration
- Netlify: Use netlify-cli with site ID and auth token
- AWS: Configure S3/CloudFront or ECS deployment
- Docker: Build and push container images to registry
- Self-Hosted: SSH deployment with rsync or git pull
Monitoring and Notifications
To add monitoring and notifications:
- Configure Slack/Discord webhooks for deployment notifications
- Add GitHub status checks for required CI jobs
- Set up error tracking integration (Sentry, etc.)
- Monitor workflow execution times and optimize slow jobs
- Track deployment frequency and failure rates
Troubleshooting
Common issues and solutions:
- Cache Misses: Verify cache key includes all dependency files
- Timeout Errors: Increase timeout or split into parallel jobs
- Permission Errors: Check repository secrets and permissions
- Build Failures: Ensure environment variables are set correctly
- Preview URL Not Commented: Verify PR comment permissions and token scope