A complete CI/CD pipeline designed for Samsung Galaxy camera quality validation programs. Every code commit to the camera HAL or ISP pipeline automatically triggers a full regression suite across multiple devices, generates quality metrics, and alerts the team on failures.
Designed from 13 consecutive Samsung Galaxy flagship release cycles.
| Stage | What Happens |
|---|---|
| Build Trigger | Code merged β pipeline starts automatically |
| Device Farm | 6 physical Samsung devices provisioned via ADB |
| Camera Tests | Appium + Python test suite executes (Photo, Video, Pro, Night) |
| Quality Metrics | SSIM, PSNR, ΞE2000 computed on captured images |
| Memory Check | ADB dumpsys meminfo scans for leaks after each test |
| Report | Allure HTML report generated with screenshots |
| Alert | Slack notification with pass/fail summary + report link |
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Jenkins Pipeline β
β β
β 1. CHECKOUT β Pull latest camera code β
β 2. BUILD β Compile APK / firmware β
β 3. PROVISION β Flash devices via ADB β
β 4. SMOKE β 5-min quick validation β
β 5. REGRESSION β Full 2-hour camera suite β
β 6. METRICS β Image quality analysis β
β 7. LEAK CHECK β Memory profiling β
β 8. REPORT β Allure + HTML report β
β 9. NOTIFY β Slack + email alert β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Camera_CI-CD/
β
βββ Jenkinsfile β Main pipeline definition
β
βββ pipeline/
β βββ stages/
β β βββ build.groovy β APK build stage
β β βββ provision.groovy β Device setup via ADB
β β βββ smoke.groovy β Quick smoke test
β β βββ regression.groovy β Full camera regression
β βββ notifications/
β βββ slack_notify.groovy β Slack alerts
β
βββ tests/
β βββ camera/
β β βββ test_photo_capture.py β Photo mode tests
β β βββ test_video_record.py β Video recording tests
β β βββ test_pro_mode.py β Pro mode validation
β β βββ test_night_mode.py β Night mode tests
β βββ quality/
β βββ ssim_validator.py β Structural similarity check
β βββ psnr_calculator.py β Peak signal-to-noise ratio
β βββ color_accuracy.py β ΞE2000 color difference
β
βββ scripts/
β βββ adb_device_check.sh β Verify devices connected
β βββ flash_build.sh β Flash firmware to device
β βββ memory_leak_scan.sh β ADB meminfo scanner
β
βββ config/
β βββ devices.json β Device UDID registry
β βββ thresholds.json β Quality pass/fail thresholds
β
βββ reports/ β Auto-generated Allure reports
βββ requirements.txt
βββ README.md
# Clone
git clone https://github.com/vanichalla24/Camera_CI-CD.git
# Install Python dependencies
pip install -r requirements.txt
# Verify devices
bash scripts/adb_device_check.sh
# Run locally
python -m pytest tests/camera/ --alluredir=reports/allure-results
# Generate report
allure generate reports/allure-results -o reports/allure-report --clean
allure open reports/allure-report{
"ssim_min": 0.92,
"psnr_min": 35.0,
"delta_e_max": 2.5,
"memory_leak_threshold_mb": 50,
"test_execution_max_minutes": 120
}- SSIM β Structural Similarity Index (image quality vs reference)
- PSNR β Peak Signal-to-Noise Ratio (noise level measurement)
- ΞE2000 β Perceptual color accuracy vs Macbeth color chart
- PSS Memory β Proportional Set Size after 20 capture iterations
- Jank Frames β
dumpsys gfxinfodropped frames in viewfinder - Focus Time β PDAF autofocus convergence (ms)
Vaani Challa β QA Architect | Samsung SRIB | 17+ Years Camera QA Lead Β· 13 Galaxy flagship releases Β· Zero S1 escapes
MIT Β© Vaani Challa