feat: add GitHub Actions CI/CD pipeline and PR templates
- Add comprehensive CI/CD workflow for Flutter and .NET Core - Include security scanning with Trivy - Add automated testing for both frontend and backend - Setup staging and production deployment pipelines - Create detailed PR template with checklists - Add bug report and feature request issue templates 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
c120d5125d
commit
9e92afb24b
|
|
@ -0,0 +1,58 @@
|
|||
---
|
||||
name: 🐛 Bug Report
|
||||
about: Create a report to help us improve
|
||||
title: '[BUG] '
|
||||
labels: ['bug', 'needs-triage']
|
||||
assignees: ''
|
||||
---
|
||||
|
||||
## 🐛 Bug Description
|
||||
<!-- A clear and concise description of what the bug is -->
|
||||
|
||||
## 🔄 Steps to Reproduce
|
||||
1. Go to '...'
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
|
||||
## ✅ Expected Behavior
|
||||
<!-- A clear and concise description of what you expected to happen -->
|
||||
|
||||
## ❌ Actual Behavior
|
||||
<!-- A clear and concise description of what actually happened -->
|
||||
|
||||
## 📱 Environment
|
||||
### Mobile App (Flutter)
|
||||
- **Platform**: iOS / Android
|
||||
- **Device**: [e.g. iPhone 12, Samsung Galaxy S21]
|
||||
- **OS Version**: [e.g. iOS 15.0, Android 12]
|
||||
- **App Version**: [e.g. 1.2.0]
|
||||
|
||||
### Backend (.NET Core)
|
||||
- **Environment**: Development / Staging / Production
|
||||
- **Server OS**: [if known]
|
||||
- **Database**: [PostgreSQL version]
|
||||
|
||||
## 📸 Screenshots
|
||||
<!-- If applicable, add screenshots to help explain your problem -->
|
||||
|
||||
## 📋 Additional Context
|
||||
<!-- Add any other context about the problem here -->
|
||||
|
||||
## 🔍 Error Logs
|
||||
<!-- If available, add any relevant error logs or stack traces -->
|
||||
|
||||
```
|
||||
Paste error logs here
|
||||
```
|
||||
|
||||
## 🎯 Priority
|
||||
<!-- Mark the priority level -->
|
||||
- [ ] 🔴 Critical (System down, data loss)
|
||||
- [ ] 🟠 High (Major feature broken)
|
||||
- [ ] 🟡 Medium (Minor feature issue)
|
||||
- [ ] 🟢 Low (Cosmetic issue)
|
||||
|
||||
## 🏷️ Labels
|
||||
<!-- The following labels will be automatically applied -->
|
||||
<!-- bug, needs-triage -->
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
---
|
||||
name: ✨ Feature Request
|
||||
about: Suggest an idea for this project
|
||||
title: '[FEATURE] '
|
||||
labels: ['enhancement', 'needs-triage']
|
||||
assignees: ''
|
||||
---
|
||||
|
||||
## 💡 Feature Description
|
||||
<!-- A clear and concise description of the feature you want to see -->
|
||||
|
||||
## 🎯 Problem Statement
|
||||
<!-- What problem does this feature solve? -->
|
||||
**Is your feature request related to a problem?**
|
||||
A clear description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
|
||||
## 🛠 Proposed Solution
|
||||
<!-- Describe the solution you'd like to see -->
|
||||
|
||||
## 🔄 User Stories
|
||||
<!-- Describe how users would interact with this feature -->
|
||||
- As a [user type], I want [goal] so that [benefit]
|
||||
- As a [user type], I want [goal] so that [benefit]
|
||||
|
||||
## 📱 Platform
|
||||
<!-- Which parts of the system would be affected? -->
|
||||
- [ ] 📱 Mobile App (Flutter)
|
||||
- [ ] 🔧 Backend API (.NET Core)
|
||||
- [ ] 🗄️ Database Schema
|
||||
- [ ] 🎮 Gamification System
|
||||
- [ ] 🤖 AI Analysis Engine
|
||||
- [ ] 📊 Analytics/Reporting
|
||||
- [ ] 🔐 Authentication/Security
|
||||
|
||||
## 🎨 UI/UX Considerations
|
||||
<!-- If this affects the UI, describe the expected user experience -->
|
||||
|
||||
## 🔧 Technical Considerations
|
||||
<!-- Any technical implementation details or constraints -->
|
||||
|
||||
## 📈 Success Metrics
|
||||
<!-- How would we measure the success of this feature? -->
|
||||
|
||||
## 🚧 Alternative Solutions
|
||||
<!-- Describe alternatives you've considered -->
|
||||
|
||||
## 📋 Additional Context
|
||||
<!-- Add any other context, mockups, or examples -->
|
||||
|
||||
## 🎯 Priority
|
||||
<!-- Mark the priority level -->
|
||||
- [ ] 🔴 Critical (Essential for launch)
|
||||
- [ ] 🟠 High (Important for user experience)
|
||||
- [ ] 🟡 Medium (Nice to have)
|
||||
- [ ] 🟢 Low (Future consideration)
|
||||
|
||||
## 📅 Timeline
|
||||
<!-- When would you like to see this feature? -->
|
||||
- [ ] Next release
|
||||
- [ ] Within 3 months
|
||||
- [ ] Within 6 months
|
||||
- [ ] Future roadmap
|
||||
|
||||
## 🏷️ Labels
|
||||
<!-- The following labels will be automatically applied -->
|
||||
<!-- enhancement, needs-triage -->
|
||||
|
|
@ -0,0 +1,88 @@
|
|||
# Pull Request
|
||||
|
||||
## 📋 Summary
|
||||
<!-- Provide a brief description of the changes in this PR -->
|
||||
|
||||
## 🎯 Type of Change
|
||||
<!-- Mark the relevant option with an 'x' -->
|
||||
- [ ] 🐛 Bug fix (non-breaking change which fixes an issue)
|
||||
- [ ] ✨ New feature (non-breaking change which adds functionality)
|
||||
- [ ] 💥 Breaking change (fix or feature that would cause existing functionality to not work as expected)
|
||||
- [ ] 📚 Documentation update
|
||||
- [ ] 🏗️ Infrastructure/build changes
|
||||
- [ ] 🧹 Code cleanup/refactoring
|
||||
- [ ] 🧪 Tests only
|
||||
|
||||
## 🔗 Related Issues
|
||||
<!-- Link any related issues using "Fixes #123" or "Related to #123" -->
|
||||
|
||||
## 🛠 Changes Made
|
||||
<!-- Describe the changes made in detail -->
|
||||
|
||||
### Frontend (Flutter)
|
||||
- [ ] UI components updated
|
||||
- [ ] State management changes
|
||||
- [ ] Navigation changes
|
||||
- [ ] New screens/widgets added
|
||||
|
||||
### Backend (.NET Core)
|
||||
- [ ] API endpoints added/modified
|
||||
- [ ] Database schema changes
|
||||
- [ ] Business logic updates
|
||||
- [ ] Authentication/authorization changes
|
||||
|
||||
## 🧪 Testing
|
||||
<!-- Describe the testing done for this change -->
|
||||
|
||||
### Flutter Testing
|
||||
- [ ] Unit tests added/updated
|
||||
- [ ] Widget tests added/updated
|
||||
- [ ] Integration tests added/updated
|
||||
- [ ] Manual testing completed on iOS
|
||||
- [ ] Manual testing completed on Android
|
||||
|
||||
### .NET Testing
|
||||
- [ ] Unit tests added/updated
|
||||
- [ ] Integration tests added/updated
|
||||
- [ ] API testing completed
|
||||
- [ ] Database migration tested
|
||||
|
||||
## 📱 Screenshots/Videos
|
||||
<!-- Add screenshots or videos if applicable -->
|
||||
|
||||
## 📝 Additional Notes
|
||||
<!-- Any additional context, warnings, or notes for reviewers -->
|
||||
|
||||
## ✅ Checklist
|
||||
<!-- Mark completed items with an 'x' -->
|
||||
|
||||
### Code Quality
|
||||
- [ ] Code follows the established coding standards
|
||||
- [ ] Self-review of the code completed
|
||||
- [ ] Code is properly commented (especially complex logic)
|
||||
- [ ] No debugging code or console logs left in
|
||||
- [ ] Error handling is appropriate
|
||||
|
||||
### Documentation
|
||||
- [ ] Documentation updated (if needed)
|
||||
- [ ] API documentation updated (if applicable)
|
||||
- [ ] README updated (if needed)
|
||||
|
||||
### Security & Performance
|
||||
- [ ] No sensitive data exposed in code
|
||||
- [ ] Performance impact considered
|
||||
- [ ] Security implications reviewed
|
||||
- [ ] Accessibility guidelines followed (for UI changes)
|
||||
|
||||
### Testing & Deployment
|
||||
- [ ] All tests pass locally
|
||||
- [ ] CI/CD pipeline passes
|
||||
- [ ] Database migrations work (if applicable)
|
||||
- [ ] Feature works in staging environment
|
||||
|
||||
## 👥 Reviewers
|
||||
<!-- Tag specific people if needed -->
|
||||
@team-leads @senior-developers
|
||||
|
||||
---
|
||||
**Note**: Please ensure all checkboxes are marked before requesting review.
|
||||
|
|
@ -0,0 +1,137 @@
|
|||
name: CI/CD Pipeline
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ main, develop ]
|
||||
pull_request:
|
||||
branches: [ main, develop ]
|
||||
|
||||
jobs:
|
||||
# Flutter Mobile App CI
|
||||
flutter-test:
|
||||
name: Flutter Tests
|
||||
runs-on: ubuntu-latest
|
||||
defaults:
|
||||
run:
|
||||
working-directory: ./mobile
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Flutter
|
||||
uses: subosito/flutter-action@v2
|
||||
with:
|
||||
flutter-version: '3.16.0'
|
||||
channel: 'stable'
|
||||
|
||||
- name: Get dependencies
|
||||
run: flutter pub get
|
||||
|
||||
- name: Analyze code
|
||||
run: flutter analyze
|
||||
|
||||
- name: Run tests
|
||||
run: flutter test
|
||||
|
||||
- name: Generate coverage
|
||||
run: flutter test --coverage
|
||||
|
||||
- name: Upload coverage to Codecov
|
||||
uses: codecov/codecov-action@v3
|
||||
with:
|
||||
file: ./mobile/coverage/lcov.info
|
||||
|
||||
# .NET Backend API CI
|
||||
dotnet-test:
|
||||
name: .NET Tests
|
||||
runs-on: ubuntu-latest
|
||||
defaults:
|
||||
run:
|
||||
working-directory: ./backend
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Setup .NET
|
||||
uses: actions/setup-dotnet@v3
|
||||
with:
|
||||
dotnet-version: '8.0.x'
|
||||
|
||||
- name: Restore dependencies
|
||||
run: dotnet restore
|
||||
|
||||
- name: Build
|
||||
run: dotnet build --no-restore --configuration Release
|
||||
|
||||
- name: Test
|
||||
run: dotnet test --no-build --configuration Release --verbosity normal --collect:"XPlat Code Coverage"
|
||||
|
||||
- name: Upload coverage to Codecov
|
||||
uses: codecov/codecov-action@v3
|
||||
with:
|
||||
file: ./backend/TestResults/*/coverage.cobertura.xml
|
||||
|
||||
# Security and Quality Checks
|
||||
security-scan:
|
||||
name: Security Scan
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Run Trivy vulnerability scanner
|
||||
uses: aquasecurity/trivy-action@master
|
||||
with:
|
||||
scan-type: 'fs'
|
||||
scan-ref: '.'
|
||||
format: 'sarif'
|
||||
output: 'trivy-results.sarif'
|
||||
|
||||
- name: Upload Trivy scan results to GitHub Security tab
|
||||
uses: github/codeql-action/upload-sarif@v2
|
||||
with:
|
||||
sarif_file: 'trivy-results.sarif'
|
||||
|
||||
# Build and Deploy to Staging (develop branch only)
|
||||
deploy-staging:
|
||||
name: Deploy to Staging
|
||||
needs: [flutter-test, dotnet-test]
|
||||
runs-on: ubuntu-latest
|
||||
if: github.ref == 'refs/heads/develop' && github.event_name == 'push'
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Configure AWS credentials
|
||||
uses: aws-actions/configure-aws-credentials@v2
|
||||
with:
|
||||
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||
aws-region: us-west-2
|
||||
|
||||
- name: Deploy to staging
|
||||
run: |
|
||||
echo "Deploying to staging environment"
|
||||
# Add actual deployment commands here
|
||||
|
||||
# Build and Deploy to Production (main branch only)
|
||||
deploy-production:
|
||||
name: Deploy to Production
|
||||
needs: [flutter-test, dotnet-test, security-scan]
|
||||
runs-on: ubuntu-latest
|
||||
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
|
||||
environment: production
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Configure AWS credentials
|
||||
uses: aws-actions/configure-aws-credentials@v2
|
||||
with:
|
||||
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||
aws-region: us-west-2
|
||||
|
||||
- name: Deploy to production
|
||||
run: |
|
||||
echo "Deploying to production environment"
|
||||
# Add actual deployment commands here
|
||||
Loading…
Reference in New Issue