mirror of
https://github.com/harvard-edge/cs249r_book.git
synced 2026-07-10 11:22:07 -05:00
🏗️ FOLDER NAMING: Standardize to build-quarto-* pattern - docker/quarto-build-linux/ → docker/build-quarto-linux/ - docker/quarto-build-windows/ → docker/build-quarto-windows/ - Emphasizes these are BUILD instructions, not final products 🐳 CONTAINER NAMING: Clean quarto-* pattern - quarto-build-linux → quarto-linux:latest - quarto-build-windows → quarto-windows:latest - Follows Docker Hub conventions (nginx:latest, not nginx-build:latest) 🔧 WORKFLOW FIX: Resolve build-manager-enhanced error - Fixed 'steps.strategy.outputs.workflow' error (Line 280, Col 15) - GitHub Actions doesn't support dynamic workflow paths with 'uses' - Replaced with conditional steps using static workflow references - Now uses proper container builds when available, falls back gracefully 📝 UPDATES: - All workflow files: Updated paths and container names - All Dockerfiles: Updated internal COPY paths - All documentation: Updated references This creates clear separation between build assets and built products while fixing the workflow syntax error that prevented execution.
5.1 KiB
5.1 KiB
Enhanced Build Manager Testing Plan
Overview
The enhanced build manager provides intelligent container-based builds with fallback to traditional builds. This document outlines the testing strategy for the feature branch.
Architecture
Smart Container Management
- Container Health Check: Verifies if containers exist and are up-to-date
- Conditional Building: Only rebuilds containers when needed
- Intelligent Routing: Uses fast containers when available, traditional builds otherwise
- Comprehensive Reporting: Clear visibility into which strategy was used
Performance Benefits
- Fast path: 5-10 minutes (with containers)
- Traditional path: 45 minutes (without containers)
- Graceful degradation: Always works even if containers fail
Testing Strategy
Phase 1: Container Build Testing
Test that containers build correctly from feature branch:
# Test Linux container build
gh workflow run build-linux-container.yml --ref feature/enhanced-build-manager
# Test Windows container build
gh workflow run build-windows-container.yml --ref feature/enhanced-build-manager
Phase 2: Enhanced Manager Testing
Test the enhanced manager with different scenarios:
# Test 1: Full enhanced manager with container building
gh workflow run build-manager-enhanced.yml \
--ref feature/enhanced-build-manager \
--field force_container_rebuild=true \
--field build_format=html
# Test 2: Enhanced manager using existing containers
gh workflow run build-manager-enhanced.yml \
--ref feature/enhanced-build-manager \
--field force_container_rebuild=false \
--field build_format=html
# Test 3: Test with specific branch
gh workflow run build-manager-enhanced.yml \
--ref feature/enhanced-build-manager \
--field test_branch=feature/enhanced-build-manager \
--field build_format=html
Phase 3: Individual Workflow Testing
Test individual workflows still work:
# Test container-based build directly
gh workflow run quarto-build-container.yml \
--ref feature/enhanced-build-manager \
--field os=ubuntu-latest \
--field format=html
# Test traditional build directly
gh workflow run quarto-build.yml \
--ref feature/enhanced-build-manager \
--field os=ubuntu-latest \
--field format=html
Expected Outcomes
Successful Container Path
- Container health check finds containers available
- Skips container building (unless forced)
- Uses
quarto-build-container.ymlfor fast builds - Completes in 5-10 minutes
Successful Traditional Path
- Container health check finds containers unavailable
- Skips container building
- Uses
quarto-build.ymlfor traditional builds - Completes in ~45 minutes
Container Building Path
- Container health check determines rebuild needed
- Builds containers (may take 20-30 minutes first time)
- Uses newly built containers for fast builds
- Future runs are fast (5-10 minutes)
Container Naming Convention
The enhanced manager uses project-based naming:
- Linux Container:
ghcr.io/harvard-edge/cs249r_book/quarto-linux:latest - Windows Container:
ghcr.io/harvard-edge/cs249r_book/quarto-windows:latest
This clearly identifies containers as belonging to the ML Systems book project and scales well for future projects.
Safety Features
Branch Isolation
- Feature branch won't trigger automatic builds on main/dev
- Manual testing only via
workflow_dispatch - No impact on production workflows
Fallback Protection
- Always falls back to working traditional builds
- Never breaks existing functionality
- Comprehensive error reporting
Consistency Enforcement
- Single source of truth for container names
- Standardized container references across workflows
- Prevents the naming mismatches we just fixed
Success Criteria
Must Have
- Containers build successfully from feature branch
- Enhanced manager completes without errors
- Traditional builds still work as fallback
- Clear reporting of which strategy was used
Nice to Have
- Performance improvement visible in build times
- Container reuse works (second run much faster)
- Windows containers also work (when implemented)
Migration Plan
Once testing is successful:
- Validate: All tests pass on feature branch
- Review: Code review and documentation update
- Merge: Merge to dev branch for broader testing
- Monitor: Watch dev branch builds for any issues
- Deploy: Enable for main branch after dev validation
Rollback Plan
If issues arise:
- Immediate: Use manual
workflow_dispatchwith traditional builds - Short-term: Revert to original
build-manager.yml - Long-term: Fix issues on feature branch and re-test
Key Benefits
For Development
- Faster iteration: 5-10 min builds instead of 45 min
- Better reliability: Fallback ensures builds always work
- Clear feedback: Know immediately which strategy was used
For Production
- Consistency: Single manager orchestrates all builds
- Performance: Dramatic build time reduction
- Maintenance: Centralized container management