Enhance README.md with badges, installation instructions, and community support details. Improved project structure and added quick contribution guidelines.
This commit is contained in:
161
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
161
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
@@ -0,0 +1,161 @@
|
||||
---
|
||||
name: Bug Report
|
||||
about: Create a report to help us improve NowYouSeeMe
|
||||
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 description of what you expected to happen.
|
||||
|
||||
## ❌ Actual Behavior
|
||||
|
||||
A clear description of what actually happened.
|
||||
|
||||
## 📸 Screenshots
|
||||
|
||||
If applicable, add screenshots to help explain your problem.
|
||||
|
||||
## 🖥️ Environment
|
||||
|
||||
### System Information
|
||||
- **OS**: [e.g., Ubuntu 20.04, Windows 10, macOS 12]
|
||||
- **Python Version**: [e.g., 3.9.7]
|
||||
- **CUDA Version**: [e.g., 11.6] (if applicable)
|
||||
- **GPU**: [e.g., NVIDIA GTX 1060, RTX 3080]
|
||||
|
||||
### Hardware Information
|
||||
- **Camera**: [e.g., Logitech C920, Built-in webcam]
|
||||
- **WiFi Card**: [e.g., Intel 5300, Broadcom BCM4313]
|
||||
- **RAM**: [e.g., 8GB, 16GB]
|
||||
- **Storage**: [e.g., SSD, HDD]
|
||||
|
||||
### Software Information
|
||||
- **NowYouSeeMe Version**: [e.g., 1.0.0, latest commit hash]
|
||||
- **Installation Method**: [e.g., Docker, PyPI, Manual]
|
||||
- **Dependencies**: [List any custom dependencies]
|
||||
|
||||
## 📋 Additional Context
|
||||
|
||||
Add any other context about the problem here, such as:
|
||||
- When did this issue start occurring?
|
||||
- Does it happen consistently or intermittently?
|
||||
- Are there any error messages in the logs?
|
||||
- Have you tried any workarounds?
|
||||
|
||||
## 📊 Performance Impact
|
||||
|
||||
- **Latency**: [e.g., Increased from 18ms to 50ms]
|
||||
- **Accuracy**: [e.g., Reduced from 8cm to 25cm]
|
||||
- **Frame Rate**: [e.g., Dropped from 45 FPS to 15 FPS]
|
||||
- **CSI Rate**: [e.g., Reduced from 120 pkt/s to 30 pkt/s]
|
||||
|
||||
## 🔧 Debug Information
|
||||
|
||||
### Log Files
|
||||
```bash
|
||||
# Check application logs
|
||||
tail -f logs/nowyouseeme.log
|
||||
|
||||
# Check system logs
|
||||
dmesg | tail -20
|
||||
|
||||
# Check GPU status
|
||||
nvidia-smi
|
||||
```
|
||||
|
||||
### Configuration Files
|
||||
```json
|
||||
// camera_config.json
|
||||
{
|
||||
"camera": {
|
||||
"device_id": 0,
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"fps": 30
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
```json
|
||||
// csi_config.json
|
||||
{
|
||||
"csi": {
|
||||
"interface": "wlan0",
|
||||
"channel": 6,
|
||||
"bandwidth": 20,
|
||||
"packet_rate": 100
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 🧪 Reproduction Steps
|
||||
|
||||
### Minimal Reproduction
|
||||
```python
|
||||
# Minimal code to reproduce the issue
|
||||
import cv2
|
||||
import numpy as np
|
||||
from src.ingestion.capture import CameraCapture
|
||||
|
||||
# Test camera capture
|
||||
cap = CameraCapture(config)
|
||||
frame = cap.get_frame()
|
||||
print("Frame shape:", frame.shape if frame is not None else "None")
|
||||
```
|
||||
|
||||
### Test Environment
|
||||
- [ ] Fresh installation
|
||||
- [ ] Clean virtual environment
|
||||
- [ ] Different hardware configuration
|
||||
- [ ] Different operating system
|
||||
|
||||
## 🔍 Investigation Steps
|
||||
|
||||
### What I've Tried
|
||||
- [ ] Restarted the application
|
||||
- [ ] Recalibrated camera and RF
|
||||
- [ ] Updated dependencies
|
||||
- [ ] Checked hardware connections
|
||||
- [ ] Verified configuration files
|
||||
- [ ] Ran in debug mode
|
||||
|
||||
### Debug Output
|
||||
```
|
||||
# Add any debug output or error messages here
|
||||
```
|
||||
|
||||
## 📈 Impact Assessment
|
||||
|
||||
- **Severity**: [Critical/High/Medium/Low]
|
||||
- **Affected Users**: [All users/Specific hardware/Development only]
|
||||
- **Workaround Available**: [Yes/No/Partial]
|
||||
|
||||
## 💡 Suggested Solutions
|
||||
|
||||
If you have suggestions on a fix for the bug, please describe them here.
|
||||
|
||||
## 📝 Additional Notes
|
||||
|
||||
Any other information that might be relevant to the bug report.
|
||||
|
||||
---
|
||||
|
||||
**Before submitting:**
|
||||
- [ ] I have searched existing issues to avoid duplicates
|
||||
- [ ] I have provided all required information
|
||||
- [ ] I have tested with the latest version
|
||||
- [ ] I have included relevant logs and debug information
|
||||
254
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
254
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
@@ -0,0 +1,254 @@
|
||||
---
|
||||
name: Feature Request
|
||||
about: Suggest an idea for NowYouSeeMe
|
||||
title: '[FEATURE] '
|
||||
labels: ['enhancement', 'needs-triage']
|
||||
assignees: ''
|
||||
---
|
||||
|
||||
## 🚀 Feature Description
|
||||
|
||||
A clear and concise description of the feature you'd like to see implemented.
|
||||
|
||||
## 🎯 Use Case
|
||||
|
||||
Describe how this feature would be used and what problem it solves:
|
||||
|
||||
- **Problem**: What problem does this feature solve?
|
||||
- **Solution**: How does this feature address the problem?
|
||||
- **Users**: Who would benefit from this feature?
|
||||
- **Impact**: What would be the impact of implementing this feature?
|
||||
|
||||
## 💡 Proposed Implementation
|
||||
|
||||
If you have ideas on how this could be implemented, please describe them:
|
||||
|
||||
### Technical Approach
|
||||
```python
|
||||
# Example implementation approach
|
||||
class NewFeature:
|
||||
def __init__(self, config: FeatureConfig):
|
||||
self.config = config
|
||||
|
||||
def process_data(self, data: InputData) -> OutputData:
|
||||
# Implementation details
|
||||
pass
|
||||
```
|
||||
|
||||
### API Design
|
||||
```python
|
||||
# Example API usage
|
||||
from src.new_module import NewFeature
|
||||
|
||||
feature = NewFeature(config)
|
||||
result = feature.process_data(input_data)
|
||||
```
|
||||
|
||||
### Configuration
|
||||
```json
|
||||
{
|
||||
"new_feature": {
|
||||
"enabled": true,
|
||||
"parameter1": "value1",
|
||||
"parameter2": "value2"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 🔄 Alternatives Considered
|
||||
|
||||
What other solutions have you considered? Please include:
|
||||
|
||||
- **Alternative 1**: Description and why it wasn't chosen
|
||||
- **Alternative 2**: Description and why it wasn't chosen
|
||||
- **No implementation**: What happens if this feature isn't implemented
|
||||
|
||||
## 📊 Priority Assessment
|
||||
|
||||
### Impact
|
||||
- **User Impact**: [High/Medium/Low] - How many users would benefit?
|
||||
- **Technical Impact**: [High/Medium/Low] - How complex is the implementation?
|
||||
- **Performance Impact**: [High/Medium/Low] - How does it affect system performance?
|
||||
|
||||
### Effort Estimation
|
||||
- **Development Time**: [1-2 weeks, 1-2 months, 3+ months]
|
||||
- **Testing Effort**: [Low/Medium/High]
|
||||
- **Documentation Effort**: [Low/Medium/High]
|
||||
|
||||
## 🎯 Success Criteria
|
||||
|
||||
Define what success looks like for this feature:
|
||||
|
||||
- [ ] **Functional Requirements**
|
||||
- [ ] Feature works as described
|
||||
- [ ] Integrates with existing system
|
||||
- [ ] Maintains performance targets
|
||||
|
||||
- [ ] **Non-Functional Requirements**
|
||||
- [ ] Latency remains <20ms
|
||||
- [ ] Accuracy remains <10cm
|
||||
- [ ] Frame rate remains 30-60 FPS
|
||||
|
||||
- [ ] **User Experience**
|
||||
- [ ] Intuitive user interface
|
||||
- [ ] Clear documentation
|
||||
- [ ] Backward compatibility
|
||||
|
||||
## 🔧 Technical Requirements
|
||||
|
||||
### Hardware Requirements
|
||||
- **GPU**: [Required/Optional/Not needed]
|
||||
- **Camera**: [Required/Optional/Not needed]
|
||||
- **WiFi**: [Required/Optional/Not needed]
|
||||
- **Additional Hardware**: [List any additional requirements]
|
||||
|
||||
### Software Requirements
|
||||
- **Dependencies**: [List any new dependencies]
|
||||
- **Platform Support**: [Windows/Linux/macOS/All]
|
||||
- **Python Version**: [3.8+/3.9+/3.10+/All]
|
||||
|
||||
### Integration Points
|
||||
- **Camera Module**: [Yes/No] - Integration with camera capture
|
||||
- **RF Module**: [Yes/No] - Integration with WiFi CSI
|
||||
- **SLAM Processing**: [Yes/No] - Integration with SLAM algorithms
|
||||
- **Rendering Engine**: [Yes/No] - Integration with 3D rendering
|
||||
- **Azure Integration**: [Yes/No] - Integration with cloud services
|
||||
|
||||
## 📋 Implementation Plan
|
||||
|
||||
### Phase 1: Core Implementation
|
||||
- [ ] Design API interface
|
||||
- [ ] Implement core functionality
|
||||
- [ ] Add unit tests
|
||||
- [ ] Basic integration
|
||||
|
||||
### Phase 2: Integration
|
||||
- [ ] Integrate with existing modules
|
||||
- [ ] Add configuration options
|
||||
- [ ] Performance optimization
|
||||
- [ ] Integration tests
|
||||
|
||||
### Phase 3: Polish
|
||||
- [ ] User interface updates
|
||||
- [ ] Documentation
|
||||
- [ ] Performance testing
|
||||
- [ ] User acceptance testing
|
||||
|
||||
## 🧪 Testing Strategy
|
||||
|
||||
### Unit Tests
|
||||
```python
|
||||
class TestNewFeature:
|
||||
def test_basic_functionality(self):
|
||||
"""Test basic feature functionality"""
|
||||
feature = NewFeature(config)
|
||||
result = feature.process_data(test_data)
|
||||
assert result is not None
|
||||
|
||||
def test_performance_requirements(self):
|
||||
"""Test performance meets requirements"""
|
||||
# Performance test implementation
|
||||
```
|
||||
|
||||
### Integration Tests
|
||||
```python
|
||||
class TestNewFeatureIntegration:
|
||||
def test_integration_with_existing_modules(self):
|
||||
"""Test integration with existing system"""
|
||||
# Integration test implementation
|
||||
```
|
||||
|
||||
### Performance Tests
|
||||
```python
|
||||
class TestNewFeaturePerformance:
|
||||
def test_latency_requirements(self):
|
||||
"""Test latency remains under 20ms"""
|
||||
# Latency test implementation
|
||||
```
|
||||
|
||||
## 📚 Documentation Requirements
|
||||
|
||||
### User Documentation
|
||||
- [ ] Feature overview and benefits
|
||||
- [ ] Installation and setup instructions
|
||||
- [ ] Configuration options
|
||||
- [ ] Usage examples
|
||||
- [ ] Troubleshooting guide
|
||||
|
||||
### Developer Documentation
|
||||
- [ ] API reference
|
||||
- [ ] Architecture integration
|
||||
- [ ] Development guidelines
|
||||
- [ ] Testing procedures
|
||||
|
||||
## 🔄 Migration Strategy
|
||||
|
||||
### Backward Compatibility
|
||||
- [ ] Existing configurations continue to work
|
||||
- [ ] Existing APIs remain functional
|
||||
- [ ] No breaking changes to user workflows
|
||||
|
||||
### Upgrade Path
|
||||
- [ ] Automatic migration of existing data
|
||||
- [ ] Clear upgrade instructions
|
||||
- [ ] Rollback procedures if needed
|
||||
|
||||
## 📊 Metrics and Monitoring
|
||||
|
||||
### Success Metrics
|
||||
- **Adoption Rate**: Percentage of users enabling the feature
|
||||
- **Performance Impact**: Change in system latency/accuracy
|
||||
- **User Satisfaction**: Feedback and ratings
|
||||
- **Bug Reports**: Number of issues related to the feature
|
||||
|
||||
### Monitoring Points
|
||||
- [ ] Feature usage statistics
|
||||
- [ ] Performance impact monitoring
|
||||
- [ ] Error rate tracking
|
||||
- [ ] User feedback collection
|
||||
|
||||
## 💰 Resource Requirements
|
||||
|
||||
### Development Resources
|
||||
- **Developer Time**: [X weeks/months]
|
||||
- **Testing Time**: [X weeks/months]
|
||||
- **Documentation Time**: [X weeks/months]
|
||||
|
||||
### Infrastructure Resources
|
||||
- **Compute**: [CPU/GPU requirements]
|
||||
- **Storage**: [Additional storage needs]
|
||||
- **Network**: [Bandwidth requirements]
|
||||
|
||||
## 🎯 Acceptance Criteria
|
||||
|
||||
- [ ] **Functional**
|
||||
- [ ] Feature implements all described functionality
|
||||
- [ ] Integrates seamlessly with existing system
|
||||
- [ ] Maintains system performance targets
|
||||
|
||||
- [ ] **Quality**
|
||||
- [ ] Comprehensive test coverage (>80%)
|
||||
- [ ] No critical bugs or security issues
|
||||
- [ ] Performance benchmarks met
|
||||
|
||||
- [ ] **User Experience**
|
||||
- [ ] Intuitive and easy to use
|
||||
- [ ] Well-documented and supported
|
||||
- [ ] Positive user feedback
|
||||
|
||||
## 📝 Additional Context
|
||||
|
||||
Any other context, examples, or information that might be helpful:
|
||||
|
||||
- **Related Issues**: Links to related feature requests or bugs
|
||||
- **Research**: Links to relevant papers or implementations
|
||||
- **Examples**: Links to similar features in other projects
|
||||
- **Mockups**: UI/UX mockups or wireframes
|
||||
|
||||
---
|
||||
|
||||
**Before submitting:**
|
||||
- [ ] I have searched existing issues to avoid duplicates
|
||||
- [ ] I have provided comprehensive information about the feature
|
||||
- [ ] I have considered the impact on existing functionality
|
||||
- [ ] I have outlined a clear implementation plan
|
||||
227
.github/pull_request_template.md
vendored
Normal file
227
.github/pull_request_template.md
vendored
Normal file
@@ -0,0 +1,227 @@
|
||||
## 📝 Description
|
||||
|
||||
Brief description of changes made in this pull request.
|
||||
|
||||
## 🎯 Type of Change
|
||||
|
||||
Please delete options that are not relevant.
|
||||
|
||||
- [ ] 🐛 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
|
||||
- [ ] ⚡ Performance improvement
|
||||
- [ ] 🔧 Refactoring (no functional changes)
|
||||
- [ ] 🧪 Test addition or update
|
||||
- [ ] 🏗️ Build system or external dependency change
|
||||
- [ ] 🎨 Style/formatting change (no functional changes)
|
||||
|
||||
## 🔗 Related Issues
|
||||
|
||||
Closes #(issue number)
|
||||
Fixes #(issue number)
|
||||
Related to #(issue number)
|
||||
|
||||
## 🧪 Testing
|
||||
|
||||
### Test Coverage
|
||||
- [ ] Unit tests added/updated
|
||||
- [ ] Integration tests added/updated
|
||||
- [ ] Performance tests added/updated
|
||||
- [ ] Manual testing completed
|
||||
|
||||
### Test Results
|
||||
```bash
|
||||
# Run test suite
|
||||
pytest tests/ -v --cov=src
|
||||
|
||||
# Results:
|
||||
# - Total tests: X
|
||||
# - Passed: X
|
||||
# - Failed: X
|
||||
# - Coverage: X%
|
||||
```
|
||||
|
||||
### Performance Impact
|
||||
- [ ] Latency remains <20ms
|
||||
- [ ] Accuracy remains <10cm
|
||||
- [ ] Frame rate remains 30-60 FPS
|
||||
- [ ] CSI rate remains ≥100 pkt/s
|
||||
|
||||
## 📋 Checklist
|
||||
|
||||
### Code Quality
|
||||
- [ ] Code follows the project's style guidelines
|
||||
- [ ] Self-review of code completed
|
||||
- [ ] Code is commented, particularly in hard-to-understand areas
|
||||
- [ ] Corresponding changes to documentation made
|
||||
- [ ] No new warnings generated
|
||||
- [ ] No new linting errors
|
||||
|
||||
### Documentation
|
||||
- [ ] README.md updated (if applicable)
|
||||
- [ ] API documentation updated (if applicable)
|
||||
- [ ] Code comments added/updated
|
||||
- [ ] CHANGELOG.md updated
|
||||
- [ ] Installation instructions updated (if applicable)
|
||||
|
||||
### Security
|
||||
- [ ] No security vulnerabilities introduced
|
||||
- [ ] Sensitive data properly handled
|
||||
- [ ] Authentication/authorization updated (if applicable)
|
||||
- [ ] Input validation added (if applicable)
|
||||
|
||||
### Compatibility
|
||||
- [ ] Backward compatibility maintained
|
||||
- [ ] Forward compatibility considered
|
||||
- [ ] Cross-platform compatibility verified
|
||||
- [ ] Dependency versions compatible
|
||||
|
||||
## 🔧 Technical Details
|
||||
|
||||
### Changes Made
|
||||
```python
|
||||
# Example of key changes
|
||||
class NewFeature:
|
||||
def __init__(self, config: Config):
|
||||
self.config = config
|
||||
|
||||
def process_data(self, data: InputData) -> OutputData:
|
||||
# New implementation
|
||||
return processed_data
|
||||
```
|
||||
|
||||
### Configuration Changes
|
||||
```json
|
||||
{
|
||||
"new_feature": {
|
||||
"enabled": true,
|
||||
"parameter": "value"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### API Changes
|
||||
- [ ] No breaking API changes
|
||||
- [ ] New API endpoints added
|
||||
- [ ] Existing API endpoints modified
|
||||
- [ ] API documentation updated
|
||||
|
||||
### Dependencies
|
||||
- [ ] No new dependencies added
|
||||
- [ ] New dependencies added and documented
|
||||
- [ ] Dependency versions updated
|
||||
- [ ] Security implications reviewed
|
||||
|
||||
## 📊 Performance Analysis
|
||||
|
||||
### Before Changes
|
||||
- **Latency**: X ms
|
||||
- **Accuracy**: X cm
|
||||
- **Frame Rate**: X FPS
|
||||
- **Memory Usage**: X MB
|
||||
- **CPU Usage**: X%
|
||||
|
||||
### After Changes
|
||||
- **Latency**: X ms
|
||||
- **Accuracy**: X cm
|
||||
- **Frame Rate**: X FPS
|
||||
- **Memory Usage**: X MB
|
||||
- **CPU Usage**: X%
|
||||
|
||||
### Performance Tests
|
||||
```bash
|
||||
# Run performance benchmarks
|
||||
python -m pytest tests/test_performance.py -v
|
||||
|
||||
# Results:
|
||||
# - Latency test: PASSED
|
||||
# - Accuracy test: PASSED
|
||||
# - Memory test: PASSED
|
||||
```
|
||||
|
||||
## 🚀 Deployment
|
||||
|
||||
### Environment
|
||||
- [ ] Development environment tested
|
||||
- [ ] Staging environment tested
|
||||
- [ ] Production environment ready
|
||||
|
||||
### Rollback Plan
|
||||
- [ ] Rollback procedure documented
|
||||
- [ ] Data migration plan (if applicable)
|
||||
- [ ] Configuration rollback tested
|
||||
|
||||
### Monitoring
|
||||
- [ ] Metrics collection updated
|
||||
- [ ] Alerting rules updated
|
||||
- [ ] Logging enhanced (if applicable)
|
||||
|
||||
## 📸 Screenshots
|
||||
|
||||
If applicable, add screenshots to help explain your changes:
|
||||
|
||||
### Before
|
||||

|
||||
|
||||
### After
|
||||

|
||||
|
||||
## 🔍 Code Review Notes
|
||||
|
||||
### Key Areas to Review
|
||||
- [ ] Algorithm implementation
|
||||
- [ ] Error handling
|
||||
- [ ] Performance implications
|
||||
- [ ] Security considerations
|
||||
- [ ] Documentation quality
|
||||
|
||||
### Potential Issues
|
||||
- [ ] Edge cases handled
|
||||
- [ ] Error conditions tested
|
||||
- [ ] Resource cleanup implemented
|
||||
- [ ] Thread safety considered
|
||||
|
||||
## 📝 Additional Notes
|
||||
|
||||
Any additional information that reviewers should know:
|
||||
|
||||
- **Breaking Changes**: List any breaking changes
|
||||
- **Migration Guide**: Link to migration documentation
|
||||
- **Known Issues**: List any known issues or limitations
|
||||
- **Future Work**: Mention any planned follow-up work
|
||||
|
||||
## 🎯 Acceptance Criteria
|
||||
|
||||
- [ ] All tests pass
|
||||
- [ ] Code review completed
|
||||
- [ ] Documentation updated
|
||||
- [ ] Performance benchmarks met
|
||||
- [ ] Security review completed
|
||||
- [ ] Deployment tested
|
||||
|
||||
## 📋 Review Checklist
|
||||
|
||||
### For Reviewers
|
||||
- [ ] Code follows project standards
|
||||
- [ ] Tests are comprehensive
|
||||
- [ ] Documentation is clear
|
||||
- [ ] Performance impact is acceptable
|
||||
- [ ] Security implications considered
|
||||
- [ ] Backward compatibility maintained
|
||||
|
||||
### For Maintainers
|
||||
- [ ] All CI checks pass
|
||||
- [ ] Code coverage meets requirements
|
||||
- [ ] Performance benchmarks pass
|
||||
- [ ] Security scan passes
|
||||
- [ ] Documentation builds successfully
|
||||
|
||||
---
|
||||
|
||||
**Before merging:**
|
||||
- [ ] All CI/CD checks pass
|
||||
- [ ] At least one maintainer approval
|
||||
- [ ] All requested changes addressed
|
||||
- [ ] Final testing completed
|
||||
- [ ] Release notes prepared
|
||||
190
.github/workflows/cd.yml
vendored
Normal file
190
.github/workflows/cd.yml
vendored
Normal file
@@ -0,0 +1,190 @@
|
||||
name: CD
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- 'v*'
|
||||
workflow_run:
|
||||
workflows: ["CI"]
|
||||
types:
|
||||
- completed
|
||||
|
||||
env:
|
||||
PYTHON_VERSION: '3.9'
|
||||
|
||||
jobs:
|
||||
release:
|
||||
name: Create Release
|
||||
runs-on: ubuntu-latest
|
||||
if: startsWith(github.ref, 'refs/tags/v')
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: ${{ env.PYTHON_VERSION }}
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -r requirements.txt
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y build-essential cmake libopencv-dev libeigen3-dev
|
||||
|
||||
- name: Build project
|
||||
run: |
|
||||
chmod +x tools/build.sh
|
||||
./tools/build.sh
|
||||
|
||||
- name: Create release
|
||||
uses: actions/create-release@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
tag_name: ${{ github.ref }}
|
||||
release_name: Release ${{ github.ref }}
|
||||
draft: false
|
||||
prerelease: false
|
||||
|
||||
- name: Upload build artifacts
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||
asset_path: ./build/
|
||||
asset_name: nowyouseeme-${{ github.ref_name }}-linux.tar.gz
|
||||
asset_content_type: application/gzip
|
||||
|
||||
deploy-staging:
|
||||
name: Deploy to Staging
|
||||
runs-on: ubuntu-latest
|
||||
if: github.ref == 'refs/heads/develop'
|
||||
environment: staging
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: ${{ env.PYTHON_VERSION }}
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -r requirements.txt
|
||||
|
||||
- name: Deploy to staging
|
||||
run: |
|
||||
echo "Deploying to staging environment..."
|
||||
# Add your staging deployment commands here
|
||||
# Example: docker build and push to staging registry
|
||||
|
||||
- name: Notify deployment
|
||||
run: |
|
||||
echo "Staging deployment completed successfully"
|
||||
|
||||
deploy-production:
|
||||
name: Deploy to Production
|
||||
runs-on: ubuntu-latest
|
||||
if: startsWith(github.ref, 'refs/tags/v')
|
||||
environment: production
|
||||
needs: [release]
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: ${{ env.PYTHON_VERSION }}
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -r requirements.txt
|
||||
|
||||
- name: Deploy to production
|
||||
run: |
|
||||
echo "Deploying to production environment..."
|
||||
# Add your production deployment commands here
|
||||
# Example: docker build and push to production registry
|
||||
|
||||
- name: Notify deployment
|
||||
run: |
|
||||
echo "Production deployment completed successfully"
|
||||
|
||||
docker:
|
||||
name: Build and Push Docker Image
|
||||
runs-on: ubuntu-latest
|
||||
if: startsWith(github.ref, 'refs/tags/v')
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@v2
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||
|
||||
- name: Build and push Docker image
|
||||
uses: docker/build-push-action@v4
|
||||
with:
|
||||
context: .
|
||||
push: true
|
||||
tags: |
|
||||
nowyouseeme/nowyouseeme:${{ github.ref_name }}
|
||||
nowyouseeme/nowyouseeme:latest
|
||||
cache-from: type=gha
|
||||
cache-to: type=gha,mode=max
|
||||
|
||||
publish-pypi:
|
||||
name: Publish to PyPI
|
||||
runs-on: ubuntu-latest
|
||||
if: startsWith(github.ref, 'refs/tags/v')
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: ${{ env.PYTHON_VERSION }}
|
||||
|
||||
- name: Install build dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install build twine
|
||||
|
||||
- name: Build package
|
||||
run: python -m build
|
||||
|
||||
- name: Publish to PyPI
|
||||
uses: pypa/gh-action-pypi-publish@release/v1
|
||||
with:
|
||||
password: ${{ secrets.PYPI_API_TOKEN }}
|
||||
|
||||
notify:
|
||||
name: Notify Team
|
||||
runs-on: ubuntu-latest
|
||||
if: always()
|
||||
needs: [release, deploy-production, docker, publish-pypi]
|
||||
steps:
|
||||
- name: Notify on success
|
||||
if: success()
|
||||
run: |
|
||||
echo "All deployment steps completed successfully"
|
||||
# Add your notification logic here (Slack, Discord, etc.)
|
||||
|
||||
- name: Notify on failure
|
||||
if: failure()
|
||||
run: |
|
||||
echo "Deployment failed"
|
||||
# Add your failure notification logic here
|
||||
168
.github/workflows/ci.yml
vendored
Normal file
168
.github/workflows/ci.yml
vendored
Normal file
@@ -0,0 +1,168 @@
|
||||
name: CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ main, develop ]
|
||||
pull_request:
|
||||
branches: [ main, develop ]
|
||||
|
||||
env:
|
||||
PYTHON_VERSION: '3.9'
|
||||
CXX_STANDARD: '17'
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
name: Lint
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: ${{ env.PYTHON_VERSION }}
|
||||
|
||||
- name: Install Python dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install flake8 black isort mypy pylint
|
||||
pip install -r requirements.txt
|
||||
|
||||
- name: Lint Python code
|
||||
run: |
|
||||
flake8 src/ --count --select=E9,F63,F7,F82 --show-source --statistics
|
||||
black --check src/
|
||||
isort --check-only src/
|
||||
mypy src/ --ignore-missing-imports
|
||||
|
||||
test-python:
|
||||
name: Test Python
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
python-version: [3.8, 3.9, 3.10, 3.11]
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Python ${{ matrix.python-version }}
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -r requirements.txt
|
||||
pip install pytest pytest-cov pytest-mock
|
||||
|
||||
- name: Run Python tests
|
||||
run: |
|
||||
pytest src/ --cov=src --cov-report=xml --cov-report=html
|
||||
|
||||
- name: Upload coverage to Codecov
|
||||
uses: codecov/codecov-action@v3
|
||||
with:
|
||||
file: ./coverage.xml
|
||||
flags: python-${{ matrix.python-version }}
|
||||
|
||||
test-cpp:
|
||||
name: Test C++
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y build-essential cmake libopencv-dev libeigen3-dev
|
||||
|
||||
- name: Build C++ code
|
||||
run: |
|
||||
mkdir build
|
||||
cd build
|
||||
cmake ..
|
||||
make -j$(nproc)
|
||||
|
||||
- name: Run C++ tests
|
||||
run: |
|
||||
cd build
|
||||
ctest --output-on-failure
|
||||
|
||||
build:
|
||||
name: Build
|
||||
runs-on: ubuntu-latest
|
||||
needs: [lint, test-python, test-cpp]
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: ${{ env.PYTHON_VERSION }}
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -r requirements.txt
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y build-essential cmake libopencv-dev libeigen3-dev
|
||||
|
||||
- name: Build project
|
||||
run: |
|
||||
chmod +x tools/build.sh
|
||||
./tools/build.sh
|
||||
|
||||
- name: Upload build artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: build-artifacts
|
||||
path: build/
|
||||
|
||||
security:
|
||||
name: Security Scan
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Run Bandit security scan
|
||||
run: |
|
||||
pip install bandit
|
||||
bandit -r src/ -f json -o bandit-report.json
|
||||
|
||||
- name: Upload security scan results
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: security-scan
|
||||
path: bandit-report.json
|
||||
|
||||
documentation:
|
||||
name: Build Documentation
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: ${{ env.PYTHON_VERSION }}
|
||||
|
||||
- name: Install documentation dependencies
|
||||
run: |
|
||||
pip install sphinx sphinx-rtd-theme myst-parser
|
||||
|
||||
- name: Build documentation
|
||||
run: |
|
||||
cd docs
|
||||
make html
|
||||
|
||||
- name: Upload documentation
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: documentation
|
||||
path: docs/_build/html/
|
||||
20
.github/workflows/dependency-review.yml
vendored
Normal file
20
.github/workflows/dependency-review.yml
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
name: Dependency Review
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches: [ main, develop ]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
dependency-review:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Dependency Review
|
||||
uses: actions/dependency-review-action@v3
|
||||
with:
|
||||
fail-on-severity: moderate
|
||||
Reference in New Issue
Block a user