video-processor/.github/workflows/integration-tests.yml
Ryan Malloy 840bd34f29 🎬 Video Processor v0.4.0 - Complete Multimedia Processing Platform
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.
2025-09-22 01:18:49 -06:00

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