All notable changes to the KernelCI Staging Control application will be documented in this file.
- Scheduler: Added staging scheduler that will run staging at 0:00UTC 8:00UTC,16:00UTC
- Will be run using fastapi-crons
- Condition: If staging has run less than 1 hour ago - skip run
- Appears dashboard as user run, under "virtual" user "scheduler"
- Added modal verification for checking if GitHub workflows are already running
- Skip Compiler Images Option: Added option to skip compiler images update
- New checkbox in staging trigger form to skip compiler images step
- Orchestrator skips compiler images step when option is selected
- Database migration to support new skip_compiler_images field
- Reduces staging cycle time in half, to approximately 10 minutes
- Trigger Restart Step: Added final step to trigger restart of services
- Ensures kernel tree changes are picked up immediately after deployment
- Triggers restart of API and Pipeline services as the last orchestration step
- Added new deployment manager functionality for service restarts
- Staging Run Cancellation: Added ability to cancel running staging runs
- Cancel button visible to run owners, admins, and maintainers
- Automatically cancels GitHub workflows via GitHub Actions API
- Properly marks all pending/running steps as skipped or cancelled
- Kernel Tree "None" Option: Added option to skip kernel tree update entirely
- New "None (Skip kernel tree update)" option in staging trigger form
- Orchestrator skips kernel tree step when "none" is selected
- UI displays "None (Skipped)" badge for clarity
- AJAX Staging Triggers: Converted staging run form to AJAX
- Better error handling and user feedback
- Loading states with progress indicators
- No page refresh required
- Changelog Viewer: Added changelog modal accessible from navigation
- Fetches and displays CHANGELOG.md content
- Simple markdown-to-HTML conversion for formatting
- Accessible via "Changelog" link next to profile dropdown
- Database Migration System: Automatic schema migrations on startup
- Detects and adds missing database columns automatically
- Future-proof system for easy schema updates
- Clear logging of migration progress and status
- Improved Message Types: Separated informational messages from errors
- New
info_messagefield for warnings, skip reasons, and notifications error_messagefield reserved for actual errors only- Better visual distinction with appropriate styling (yellow vs red)
- New
- GitHub Workflow Manager: Enhanced with workflow cancellation capability
- Added
cancel_workflow_run()method with proper error handling - Constructor now stores repo and workflow as instance variables
- Better handling of GitHub API responses (202 Accepted status)
- Added
- Orchestrator Logic: Improved handling of cancelled and skipped runs
- Skips processing of cancelled staging runs entirely
- Better keyword handling for kernel tree selection ("auto", "none", specific trees)
- Enhanced validation and error reporting
- Form Handling: Replaced problematic form-based submission with clean AJAX API
- New
/api/staging/triggerendpoint accepting JSON payloads - Removed complex form parsing and debugging code
- Cleaner separation between UI and API logic
- New
- Configuration Issues: Resolved missing TOML dependency and settings keys
- Hardcoded settings keys to eliminate config file dependency issues
- Added missing
tomldependency to requirements.txt - Simplified configuration by removing unnecessary
[settings_keys]section
- Form Parsing Problems: Fixed kernel tree selection issues
- Eliminated mysterious form data parsing problems
- Proper handling of "none" vs "None" string confusion
- Clear validation and error messages
- Missing Imports: Added missing
datetimeimport in main.py for cancellation functionality
- Database Constraints: Enhanced single-run enforcement and conflict resolution
- Error Handling: Improved HTTP status codes and JSON error responses
- UI/UX: Better visual feedback with loading states, progress indicators, and status badges
- Code Organization: Cleaner separation of concerns between form handling and business logic