Professional video processing pipeline with AI analysis, 360° processing, and adaptive streaming capabilities. ✨ Core Features: • AI-powered content analysis with scene detection and quality assessment • Next-generation codec support (AV1, HEVC, HDR10) • Adaptive streaming (HLS/DASH) with smart bitrate ladders • Complete 360° video processing with multiple projection support • Spatial audio processing (Ambisonic, binaural, object-based) • Viewport-adaptive streaming with up to 75% bandwidth savings • Professional testing framework with video-themed HTML dashboards 🏗️ Architecture: • Modern Python 3.11+ with full type hints • Pydantic-based configuration with validation • Async processing with Procrastinate task queue • Comprehensive test coverage with 11 detailed examples • Professional documentation structure 🚀 Production Ready: • MIT License for open source use • PyPI-ready package metadata • Docker support for scalable deployment • Quality assurance with ruff, mypy, and pytest • Comprehensive example library From simple encoding to immersive experiences - complete multimedia processing platform for modern applications.
196 lines
5.1 KiB
YAML
196 lines
5.1 KiB
YAML
name: Integration Tests
|
|
|
|
on:
|
|
push:
|
|
branches: [ main, develop ]
|
|
pull_request:
|
|
branches: [ main ]
|
|
schedule:
|
|
# Run daily at 02:00 UTC
|
|
- cron: '0 2 * * *'
|
|
|
|
env:
|
|
DOCKER_BUILDKIT: 1
|
|
COMPOSE_DOCKER_CLI_BUILD: 1
|
|
|
|
jobs:
|
|
integration-tests:
|
|
name: Docker Integration Tests
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 30
|
|
|
|
strategy:
|
|
matrix:
|
|
test-suite:
|
|
- "video_processing"
|
|
- "procrastinate_worker"
|
|
- "database_migration"
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Cache Docker layers
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: /tmp/.buildx-cache
|
|
key: ${{ runner.os }}-buildx-${{ github.sha }}
|
|
restore-keys: |
|
|
${{ runner.os }}-buildx-
|
|
|
|
- name: Install system dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y ffmpeg postgresql-client
|
|
|
|
- name: Verify Docker and FFmpeg
|
|
run: |
|
|
docker --version
|
|
docker-compose --version
|
|
ffmpeg -version
|
|
|
|
- name: Run integration tests
|
|
run: |
|
|
./scripts/run-integration-tests.sh \
|
|
--test-filter "test_${{ matrix.test-suite }}" \
|
|
--timeout 1200 \
|
|
--verbose
|
|
|
|
- name: Upload test logs
|
|
if: failure()
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: integration-test-logs-${{ matrix.test-suite }}
|
|
path: test-reports/
|
|
retention-days: 7
|
|
|
|
- name: Upload test results
|
|
if: always()
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: integration-test-results-${{ matrix.test-suite }}
|
|
path: htmlcov/
|
|
retention-days: 7
|
|
|
|
full-integration-test:
|
|
name: Full Integration Test Suite
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 45
|
|
needs: integration-tests
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Install system dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y ffmpeg postgresql-client
|
|
|
|
- name: Run complete integration test suite
|
|
run: |
|
|
./scripts/run-integration-tests.sh \
|
|
--timeout 2400 \
|
|
--verbose
|
|
|
|
- name: Generate test report
|
|
if: always()
|
|
run: |
|
|
mkdir -p test-reports
|
|
echo "# Integration Test Report" > test-reports/summary.md
|
|
echo "- Date: $(date)" >> test-reports/summary.md
|
|
echo "- Commit: ${{ github.sha }}" >> test-reports/summary.md
|
|
echo "- Branch: ${{ github.ref_name }}" >> test-reports/summary.md
|
|
|
|
- name: Upload complete test results
|
|
if: always()
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: complete-integration-test-results
|
|
path: |
|
|
test-reports/
|
|
htmlcov/
|
|
retention-days: 30
|
|
|
|
performance-test:
|
|
name: Performance & Load Testing
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 20
|
|
if: github.event_name == 'schedule' || contains(github.event.pull_request.labels.*.name, 'performance')
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Install system dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y ffmpeg postgresql-client
|
|
|
|
- name: Run performance tests
|
|
run: |
|
|
./scripts/run-integration-tests.sh \
|
|
--test-filter "performance" \
|
|
--timeout 1200 \
|
|
--verbose
|
|
|
|
- name: Upload performance results
|
|
if: always()
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: performance-test-results
|
|
path: test-reports/
|
|
retention-days: 14
|
|
|
|
docker-security-scan:
|
|
name: Docker Security Scan
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Build Docker image
|
|
run: |
|
|
docker build -t video-processor:test .
|
|
|
|
- name: Run Trivy vulnerability scanner
|
|
uses: aquasecurity/trivy-action@master
|
|
with:
|
|
image-ref: 'video-processor:test'
|
|
format: 'sarif'
|
|
output: 'trivy-results.sarif'
|
|
|
|
- name: Upload Trivy scan results
|
|
uses: github/codeql-action/upload-sarif@v2
|
|
if: always()
|
|
with:
|
|
sarif_file: 'trivy-results.sarif'
|
|
|
|
notify-status:
|
|
name: Notify Test Status
|
|
runs-on: ubuntu-latest
|
|
needs: [integration-tests, full-integration-test]
|
|
if: always()
|
|
|
|
steps:
|
|
- name: Notify success
|
|
if: needs.integration-tests.result == 'success' && needs.full-integration-test.result == 'success'
|
|
run: |
|
|
echo "✅ All integration tests passed successfully!"
|
|
|
|
- name: Notify failure
|
|
if: needs.integration-tests.result == 'failure' || needs.full-integration-test.result == 'failure'
|
|
run: |
|
|
echo "❌ Integration tests failed. Check the logs for details."
|
|
exit 1 |