Configuration Automation System¶
This document describes the comprehensive automation system that maintains configuration files, documentation, and site structure information for the IT-Journey platform.
System Overview¶
The automation system follows IT-Journey's core principles to ensure consistent, reliable, and maintainable configuration management:
π― Automated Synchronization¶
- Source: Root
_config.ymlfile - Target:
pages/_about/settings/directory - Trigger: Changes to configuration or manual workflow dispatch
- Process: Copy, enhance, and document configuration changes
π Continuous Integration¶
- GitHub Actions Workflow:
.github/workflows/update-settings.yml - Helper Script:
scripts/update-settings.sh - Documentation: Automatic README and documentation generation
Components¶
1. GitHub Actions Workflow¶
File: .github/workflows/update-settings.yml
Triggers:
- Push to main branch with changes to _config.yml
- Manual workflow dispatch with force update option
Features: - Cross-platform compatibility (Ubuntu runner) - Ruby and Jekyll environment setup - Tree command installation and fallback - Comprehensive error handling - Automatic commit and push - Detailed workflow summary
2. Helper Script¶
File: scripts/update-settings.sh
Capabilities:
- Environment variable configuration
- Modular function design
- Error handling with set -e
- Cross-platform compatibility
- Manual execution support
Functions:
- copy_config() - Synchronize configuration files
- generate_tree() - Create directory structure
- generate_sitemap() - Build navigation data
- update_config_md() - Enhance configuration documentation
- update_tree_md() - Update structure documentation
- update_sitemap_md() - Refresh navigation documentation
3. Generated Files¶
Configuration Files¶
_config.yml- Synchronized Jekyll configurationconfig-utf16.txt- Windows compatibility backupsitemap-data.yml- Structured site navigation data
Documentation Files¶
config.md- Enhanced configuration documentationtree.md- Repository structure visualizationsitemap.md- Complete site navigation map
Structure Files¶
tree.txt- ASCII directory structuretree-utf16.txt- Windows-encoded structure backup
Integration with IT-Journey Principles¶
Design for Failure (DFF)¶
Error Handling:
- Workflow: Comprehensive step validation
- Script: Set -e for immediate error exit
- Fallback: Manual script execution available
- Backup: Multiple file format support
Don't Repeat Yourself (DRY)¶
Reusability:
- Functions: Modular script design
- Templates: Consistent documentation structure
- Automation: Single workflow for multiple tasks
- Configuration: Single source of truth
Keep It Simple (KIS)¶
Simplicity:
- Interface: Clear script parameters
- Logic: Straightforward workflow steps
- Dependencies: Minimal external requirements
- Maintenance: Self-documenting code
AI-Powered Development (AIPD)¶
AI Integration:
- Documentation: AI-enhanced content generation
- Optimization: Intelligent workflow improvements
- Maintenance: Automated content updates
- Learning: AI-assisted script development
Usage Guide¶
Automatic Operation¶
The system operates automatically when:
1. Changes are made to _config.yml
2. Changes are pushed to the main branch
3. GitHub Actions workflow executes
4. Files are updated and committed
Manual Operation¶
Using GitHub Actions¶
- Navigate to Actions tab in GitHub repository
- Select "Update Settings Configuration" workflow
- Click "Run workflow"
- Optionally check "Force update all settings files"
- Click "Run workflow" button
Using Script Directly¶
# Standard execution
./scripts/update-settings.sh
# With custom settings
SETTINGS_DIR="custom/path" ./scripts/update-settings.sh
# From any directory
cd /path/to/it-journey
./scripts/update-settings.sh
Local Development¶
# Install dependencies
sudo apt-get install tree # Linux
brew install tree # macOS
# Run script locally
./scripts/update-settings.sh
# Verify changes
git status
git diff
Monitoring and Maintenance¶
Workflow Monitoring¶
- GitHub Actions Tab: View execution history and logs
- Workflow Summary: Detailed step-by-step results
- Email Notifications: Failure alerts (if configured)
File Validation¶
# Check generated files
ls -la pages/_about/settings/
# Validate YAML syntax
ruby -ryaml -e "YAML.load_file('pages/_about/settings/sitemap-data.yml')"
# Test Jekyll build
bundle exec jekyll build --dry-run
Troubleshooting¶
Common Issues¶
- Tree command missing: Fallback generates basic structure
- Permission errors: Ensure script is executable (
chmod +x) - YAML syntax errors: Validate generated YAML files
- Jekyll build failures: Check configuration syntax
Debug Steps¶
# Check script permissions
ls -la scripts/update-settings.sh
# Run with debug output
bash -x scripts/update-settings.sh
# Validate configuration
bundle exec jekyll doctor
Future Enhancements¶
Planned Features¶
- Content Validation: Automatic link checking and validation
- Performance Metrics: Build time and file size monitoring
- Multi-environment: Development, staging, and production configs
- AI Enhancement: Intelligent content suggestions and optimization
Extension Points¶
- Custom Generators: Additional content generation scripts
- Validation Rules: Custom YAML and Markdown validation
- Notification Systems: Slack, email, or webhook integrations
- Metrics Collection: Performance and usage analytics
Contributing¶
To contribute to the automation system:
- Fork the repository and create a feature branch
- Test changes locally using the manual script execution
- Update documentation for any new features or changes
- Submit a pull request with clear description of improvements
- Ensure CI passes and all automation works correctly
Development Guidelines¶
- Follow existing code style and structure
- Add comprehensive error handling
- Include documentation for new features
- Test on multiple platforms when possible
- Use meaningful commit messages
Related Resources¶
- GitHub Actions Documentation
- Jekyll Configuration
- YAML Specification
- Bash Scripting Guide
- IT-Journey Contributing Guide
This automation system embodies the IT-Journey mission of using AI-powered development practices to create efficient, maintainable, and educational technology solutions.
Last Updated: 2025-06-22T23:35:00.000Z Automation: update-settings.yml β’ update-settings.sh