debian-forge/todo.txt
Joe 7c724dd149
Some checks failed
Debian Forge CI/CD Pipeline / Build and Test (push) Successful in 1m48s
Debian Forge CI/CD Pipeline / Security Audit (push) Failing after 6s
Debian Forge CI/CD Pipeline / Package Validation (push) Successful in 1m44s
Debian Forge CI/CD Pipeline / Status Report (push) Has been skipped
feat: Complete Phase 7.3 Advanced Features
- Enhanced APT stage with advanced features:
  - Package version pinning and holds
  - Custom repository priorities
  - Specific version installation
  - Updated schemas for all new options

- New dependency resolution stage (org.osbuild.apt.depsolve):
  - Advanced dependency solving with conflict resolution
  - Multiple strategies (conservative, aggressive, resolve)
  - Package optimization and dry-run support

- New Docker/OCI image building stage (org.osbuild.docker):
  - Docker and OCI container image creation
  - Flexible configuration for entrypoints, commands, env vars
  - Image export and multi-format support

- New cloud image generation stage (org.osbuild.cloud):
  - Multi-cloud support (AWS, GCP, Azure, OpenStack, DigitalOcean)
  - Cloud-init integration and provider-specific metadata
  - Live ISO and network boot image creation

- New debug and developer tools stage (org.osbuild.debug):
  - Debug logging and manifest validation
  - Performance profiling and dependency tracing
  - Comprehensive debug reports

- Example manifests for all new features:
  - debian-advanced-apt.json - Advanced APT features
  - debian-docker-container.json - Container image building
  - debian-aws-image.json - AWS cloud image
  - debian-live-iso.json - Live ISO creation
  - debian-debug-build.json - Debug mode

- Updated .gitignore with comprehensive artifact patterns
- All tests passing with 292 passed, 198 skipped
- Phase 7.3 marked as completed in todo.txt

debian-forge is now production-ready with advanced features! 🎉
2025-09-04 09:33:45 -07:00

560 lines
22 KiB
Text

# Debian Forge File Structure Reorganization Plan
# Goal: Achieve near 1:1 compatibility with original osbuild repository structure
## Phase 1: Restore Original Structure
- [x] Verify core directories exist and are complete:
- [x] .devcontainer/
- [x] .github/
- [x] assemblers/
- [x] data/
- [x] devices/
- [x] docs/
- [x] inputs/
- [x] mounts/
- [x] osbuild/ # Core Python package
- [x] runners/
- [x] schemas/
- [x] schutzbot/
- [x] selinux/
- [x] sources/
- [x] stages/
- [x] test/
- [x] tools/
- [x] samples/
- [x] Restore missing configuration files:
- [x] .bandit
- [x] .editorconfig
- [x] .git-blame-ignore-revs
- [x] .gitignore
- [x] .gitlab-ci.yml
- [x] .mypy.ini
- [x] .packit.yaml
- [x] .ruff.toml
- [x] CODEOWNERS
- [x] Schutzfile
- [x] osbuild.spec
- [x] setup.cfg
- [x] tox.ini
## Phase 2: Reorganize Debian-Specific Content ✅ COMPLETED
- [x] Move Debian documentation to docs/:
- [x] debian-forge-docs/ → docs/debian/
- [x] Keep original docs/ structure intact
- [x] Move Debian tests to test/:
- [x] debian-forge-tests/ → test/debian/
- [x] Ensure original test/ structure remains
- [x] Move Debian blueprints to samples/:
- [x] blueprints/ → test/data/manifests/debian/
- [x] Keep original samples/ content
- [x] Move Debian stages to stages/:
- [x] Ensure Debian stages integrate with existing stage structure
- [x] Maintain original stage organization
## Phase 3: Clean Up Root Directory ✅ COMPLETED
- [x] Move Python scripts to appropriate locations:
- [x] composer_*.py → tools/ (if CLI tools) or osbuild/ (if core modules)
- [x] debian_*.py → osbuild/ (core modules)
- [x] build_*.py → osbuild/ (core modules)
- [x] Remove custom build directories:
- [x] build-environments/ → Move to .osbuild/ or create proper build system integration
- [x] build-logs/ → Move to .osbuild/ or create proper build system integration
- [x] artifacts/ → Move to .osbuild/ or create proper build system integration
## Phase 4: Maintain Debian Functionality ✅ COMPLETED
- [x] Ensure Debian stages work with original pipeline system
- [x] Integrate Debian package management with existing stage architecture
- [x] Maintain OSTree support alongside original features
## Implementation Steps
1. [x] Audit current structure against original osbuild repository
2. [x] Create backup of current Debian-specific work
3. [x] Restore original structure from upstream
4. [x] Reintegrate Debian components into proper locations
5. [x] Test functionality to ensure nothing breaks
6. [x] Update documentation to reflect new structure
## Current Structure Issues Identified
- Extra directories: debian-forge-docs/, debian-forge-tests/, build-environments/, build-logs/, artifacts/ ✅ RESOLVED
- Misplaced files: Python scripts in root that should be in tools/ or osbuild/ ✅ RESOLVED
- Missing original structure: Some original directories may be incomplete ✅ VERIFIED COMPLETE
- Custom additions: Debian-specific files mixed with core structure ✅ REORGANIZED
## Priority Order
1. High: Restore core osbuild structure ✅ COMPLETED
2. Medium: Reorganize Debian content ✅ COMPLETED
3. Low: Clean up and optimize ✅ COMPLETED
4. Critical: Maintain all Debian functionality during transition ✅ COMPLETED
## Progress Summary
✅ **Phase 1**: Original structure restored and verified
✅ **Phase 2**: Debian content reorganized into proper locations
✅ **Phase 3**: Root directory cleaned up
✅ **Phase 4**: Debian functionality maintained
## Next Steps
- [x] Run tests to verify functionality
- [x] Update documentation references
- [x] Commit final reorganization
- [ ] Push changes to repository
## File Structure Achieved
The project now maintains the exact same directory structure as the original osbuild repository:
- All core directories present and complete
- All configuration files present
- Debian-specific content properly organized within standard structure
- Root directory clean and matches upstream
- Maintains 1:1 compatibility while preserving Debian functionality
## Final Status: ✅ REORGANIZATION COMPLETE
**All phases completed successfully!** The Debian Forge project now has:
- ✅ 1:1 file structure compatibility with upstream osbuild
- ✅ All Debian-specific functionality preserved and properly organized
- ✅ Clean root directory matching upstream structure
- ✅ Functional build system with Debian stages
- ✅ Proper integration of Debian modules within osbuild package
- ✅ Tested functionality with successful Debian manifest build
## Repository Status
- **Backup branch**: `backup-debian-changes` (contains all original work)
- **Main branch**: Reorganized structure with 1:1 upstream compatibility
- **Ready for**: Push to remote repository and continued development
## Phase 5: Debian Package Structure (NEW) 🆕
**Goal**: Mirror upstream osbuild RPM package structure with Debian packages
### Upstream osbuild RPM Structure (Reference):
- **osbuild** - Main package (core engine)
- **osbuild-depsolve-dnf** - DNF dependency solver
- **osbuild-luks2** - LUKS2 encryption support
- **osbuild-lvm2** - LVM2 support
- **osbuild-ostree** - OSTree support
- **osbuild-selinux** - SELinux support
- **osbuild-tools** - Helper tools and utilities
- **python3-osbuild** - Python library
### Target debian-forge Package Structure:
- [x] **debian-forge** - Main package (core engine and binary)
- [x] **debian-forge-depsolve-deb** - Debian package dependency solver (apt-based)
- [x] **debian-forge-luks2** - LUKS2 encryption support
- [x] **debian-forge-lvm2** - LVM2 support
- [x] **debian-forge-ostree** - OSTree support (critical for Debian Atomic)
- [x] **debian-forge-selinux** - SELinux support
- [x] **debian-forge-tools** - Helper tools and utilities
- [x] **python3-debian-forge** - Python library
### Implementation Status:
- [x] **CI/CD Workflow Created** - Comprehensive Forgejo workflow in `.forgejo/workflows/ci.yml`
- [x] **Package Definitions** - All 9 packages defined in debian/control
- [x] **Build Rules** - debian/rules with proper file distribution across packages
- [x] **Dependencies Mapped** - Proper stage-to-package distribution
- [x] **Repository Pushed** - Changes successfully pushed to Forgejo
- [x] **Fix Binary Path Issue** - osbuild is Python package, not standalone binary
- [x] **Test Package Building** - ✅ All 9 packages build structure verified locally
- [x] **Test Package Installation** - ✅ Package structure validated with dpkg-checkbuilddeps
- [ ] **Verify CI/CD Pipeline** - Ensure workflow runs successfully in Forgejo
### Package Dependencies:
- **debian-forge** → depends on python3-debian-forge + debian-forge-tools
- **python3-debian-forge** → core Python library with minimal deps
- **debian-forge-depsolve-deb** → depends on python3-debian-forge + libapt-pkg-dev
- **debian-forge-ostree** → depends on python3-debian-forge + ostree
- **debian-forge-luks2** → depends on python3-debian-forge + cryptsetup
- **debian-forge-lvm2** → depends on python3-debian-forge + lvm2
- **debian-forge-selinux** → depends on python3-debian-forge + selinux-policy-default
- **debian-forge-apparmor** → depends on python3-debian-forge + apparmor-policy-default (discuss if feasible)
- **debian-forge-tools** → depends on python3-debian-forge
### Stage Distribution:
- **Core stages** → python3-debian-forge
- **apt.* stages** → debian-forge-depsolve-deb
- **ostree.* stages** → debian-forge-ostree
- **luks2.* stages** → debian-forge-luks2
- **lvm2.* stages** → debian-forge-lvm2
- **selinux.* stages** → debian-forge-selinux
- **apparmor.* stages** → debian-forge-apparmor
- **tools/** → debian-forge-tools
- **Main binary** → debian-forge
### Benefits of This Structure:
- **Modular Installation** - Users can install only what they need
- **Upstream Compatibility** - Mirrors osbuild package structure exactly
- **Debian Optimization** - apt-based dependency solving instead of dnf
- **Atomic Support** - OSTree package available for Debian Atomic systems
- **Clean Dependencies** - Each package has minimal, focused dependencies
### Issues Discovered & Fixes Needed:
- [ ] **Binary Path Issue**: The workflow assumes `osbuild` is a standalone binary, but it's actually a Python package
- **Current**: `cp osbuild debian/debian-forge/usr/bin/debian-forge`
- **Fix**: Use Python entry point: `osbuild = osbuild.main_cli:osbuild_cli`
- **Solution**: The `debian-forge` package should install the Python entry point, not copy a binary
- **Update**: Modify debian/rules to use `dh_python3` properly for console scripts
### Next Actions:
1. **Fix debian/rules** - Update to handle Python entry points correctly
2. **Test local build** - Verify packages can be built locally
3. **Trigger CI** - Push fixes and let Forgejo CI run the workflow
4. **Verify packages** - Test that all 9 packages install and work correctly
## Phase 6: APT Stage Implementation ✅ COMPLETED! 🎉
**Goal**: Implement comprehensive APT package management support in debian-forge
### Current Status:
- [x] **Package Structure** - All 9 Debian packages defined and building
- [x] **CI/CD Pipeline** - Automated build and test workflow
- [x] **Basic Framework** - Python package structure in place
- [x] **APT Stage Implementation** - Core `org.osbuild.apt` stage COMPLETE
- [x] **Repository Management** - APT sources.list configuration COMPLETE
- [x] **Package Installation** - APT package installation logic COMPLETE
- [x] **Dependency Resolution** - APT dependency solving COMPLETE
### Implementation Phases:
#### Phase 6.1: Core APT Stage ✅ COMPLETED
- [x] **Create `org.osbuild.apt` stage**
- [x] Basic package installation via `apt-get install`
- [x] Repository configuration via `sources.list`
- [x] GPG key handling for repository authentication
- [x] Architecture support (amd64, arm64, etc.)
- [x] Suite/component support (main, contrib, non-free)
#### Phase 6.2: Advanced Features ✅ COMPLETED
- [x] **Repository Management**
- [x] Custom APT configuration (`apt.conf`)
- [x] Package pinning support
- [x] Insecure repository handling
- [x] Multiple repository support
- [x] **Cross-Architecture Support**
- [x] `dpkg --add-architecture` support
- [x] Multi-arch package installation
- [x] Architecture-specific repository handling
#### Phase 6.3: Integration & Testing ✅ COMPLETED
- [x] **Debian Image Types**
- [x] Debian Trixie image building
- [x] Ubuntu Jammy image building
- [x] Container image generation
- [x] **Testing & Validation**
- [x] Unit tests for APT stage
- [x] Integration tests with real manifests
- [x] Cross-architecture build tests
### Technical Requirements:
#### 1. APT Stage Structure
```
stages/
├── apt/
│ ├── apt.py # Main APT stage implementation
│ ├── repository.py # Repository management
│ ├── package.py # Package installation
│ └── key.py # GPG key handling
└── ...
```
#### 2. Configuration Options
```python
class APTOptions:
packages: List[str] # Packages to install
repositories: List[Repository] # APT repositories
keys: List[str] # GPG keys for authentication
architecture: str # Target architecture
update: bool # Run apt update
upgrade: bool # Run apt upgrade
clean: bool # Clean package cache
```
#### 3. Repository Configuration
```python
class APTRepository:
name: str # Repository name
url: str # Repository URL
suite: str # Debian suite (trixie, jammy, etc.)
components: List[str] # Components (main, contrib, non-free)
signed_by: str # GPG key for signing
insecure: bool # Allow insecure repositories
```
### Use Cases:
#### 1. Debian Container Image Building
```json
{
"pipelines": [
{
"stages": [
{
"type": "org.osbuild.apt",
"options": {
"packages": ["bootc", "apt-ostree", "systemd"],
"repositories": [
{
"name": "debian-forge",
"url": "https://git.raines.xyz/api/packages/particle-os/debian",
"suite": "trixie",
"components": ["main"]
}
]
}
}
]
}
]
}
```
#### 2. Ubuntu Image Building
```json
{
"pipelines": [
{
"stages": [
{
"type": "org.osbuild.apt",
"options": {
"packages": ["ubuntu-minimal", "cloud-init"],
"repositories": [
{
"name": "ubuntu",
"url": "http://archive.ubuntu.com/ubuntu",
"suite": "jammy",
"components": ["main", "restricted"]
}
]
}
}
]
}
]
}
```
### Benefits of APT Implementation:
- **Debian Native** - Full APT package management support
- **Ubuntu Compatible** - Works with Ubuntu repositories
- **Cross-Architecture** - Support for amd64, arm64, etc.
- **Repository Management** - Custom APT configuration
- **Security** - GPG key authentication
- **Performance** - APT caching and optimization
### Dependencies:
- **libapt-pkg-dev** - APT library development files
- **python3-apt** - Python APT bindings
- **apt-utils** - APT utilities
- **gnupg** - GPG key handling
### Testing Strategy:
- **Unit Tests** - Individual component testing
- **Integration Tests** - Full manifest testing
- **Cross-Arch Tests** - Multi-architecture builds
- **Repository Tests** - Custom repository handling
- **Security Tests** - GPG key validation
### Success Criteria:
- [ ] `org.osbuild.apt` stage implemented and working
- [ ] Basic package installation functional
- [ ] Repository configuration supported
- [ ] GPG key management working
- [ ] Cross-architecture support added
- [ ] Unit tests passing
- [ ] Integration tests passing
- [ ] Documentation updated
- [ ] Example manifests provided
### Estimated Timeline:
- **Phase 6.1**: 2-3 weeks (Core implementation)
- **Phase 6.2**: 2-3 weeks (Advanced features)
- **Phase 6.3**: 2-3 weeks (Integration & testing)
- **Total**: 6-9 weeks
### Priority:
**High** - This is the core functionality that makes debian-forge useful for Debian/Ubuntu image building.
## Phase 7: Production Readiness & Documentation (NEW) 🆕
**Goal**: Make debian-forge production-ready with comprehensive documentation and examples
### Current Status:
- [x] **Core APT Implementation** - All APT stages working perfectly
- [x] **Basic Testing** - APT stages tested with real manifests
- [x] **Package Structure** - All 9 Debian packages building
- [x] **CI/CD Pipeline** - Automated build and test workflow
- [x] **Documentation** - Comprehensive user documentation COMPLETED
- [x] **Example Manifests** - Real-world use case examples COMPLETED
- [x] **Performance Optimization** - Build speed and efficiency improvements COMPLETED
- [x] **Error Handling** - Robust error reporting and recovery COMPLETED
- [x] **Advanced Features** - Package pinning, cloud images, debug tools COMPLETED
### Implementation Phases:
#### Phase 7.1: Documentation & Examples ✅ COMPLETED
- [x] **User Documentation**
- [x] APT stage reference documentation
- [x] Debian image building tutorial
- [x] Ubuntu image creation guide
- [x] Container image building examples
- [x] **Example Manifests**
- [x] Debian Trixie minimal image
- [x] Ubuntu Jammy server image
- [x] Debian Atomic container image
- [x] Cross-architecture builds (ARM64)
- [x] **API Documentation**
- [x] Stage options and parameters
- [x] Configuration examples
- [x] Troubleshooting guide
#### Phase 7.2: Performance & Reliability ✅ COMPLETED
- [x] **Performance Optimization**
- [x] APT caching improvements
- [x] Parallel package installation
- [x] Build time optimization
- [x] Memory usage optimization
- [x] **Error Handling**
- [x] Better error messages
- [x] Package conflict resolution
- [x] Network failure recovery
- [x] Validation improvements
- [x] **Testing Enhancement**
- [x] More comprehensive test coverage
- [x] Performance benchmarks
- [x] Stress testing
- [x] Edge case testing
#### Phase 7.3: Advanced Features ✅ COMPLETED
- [x] **Advanced APT Features**
- [x] Package version pinning
- [x] Custom repository priorities
- [x] Package hold/unhold support
- [x] Advanced dependency resolution
- [x] **Integration Features**
- [x] Docker/OCI image building
- [x] Cloud image generation (AWS, GCP, Azure)
- [x] Live ISO creation
- [x] Network boot images
- [x] **Developer Tools**
- [x] Debug mode for stages
- [x] Build logging improvements
- [x] Manifest validation tools
- [x] Performance profiling
**Phase 7.3 Implementation Summary:**
- **Enhanced APT Stage**: Added package pinning, holds, priorities, and specific version support
- **New Dependency Resolution Stage**: Created `org.osbuild.apt.depsolve` with conflict resolution
- **Docker/OCI Support**: Created `org.osbuild.docker` stage for container image building
- **Cloud Image Generation**: Created `org.osbuild.cloud` stage for AWS, GCP, Azure, and other providers
- **Debug Tools**: Created `org.osbuild.debug` stage for development and troubleshooting
- **Example Manifests**: Created comprehensive examples for all new features
- **Schema Updates**: Updated all stage schemas to support new advanced options
### Success Criteria:
- [x] **Complete Documentation** - All stages documented with examples
- [x] **Example Gallery** - 10+ real-world manifest examples
- [x] **Performance Benchmarks** - Build times comparable to upstream
- [x] **Error Recovery** - Graceful handling of common failures
- [x] **User Adoption** - Ready for production use
### Estimated Timeline:
- **Phase 7.1**: 1-2 weeks (Documentation & Examples)
- **Phase 7.2**: 1-2 weeks (Performance & Reliability)
- **Phase 7.3**: 2-3 weeks (Advanced Features)
- **Total**: 4-7 weeks
### Priority:
**High** - Making debian-forge production-ready and user-friendly is essential for adoption.
## Phase 8: Mock Integration (NEW) 🆕
**Goal**: Integrate deb-mock with debian-forge for enhanced build isolation and reproducibility
### Current Status:
- [x] **Integration Plan** - Comprehensive integration plan documented
- [x] **Architecture Design** - Clear integration architecture defined
- [ ] **Mock Stage Implementation** - Create org.osbuild.deb-mock stage
- [ ] **Environment Management** - Implement mock environment lifecycle
- [ ] **APT Stage Integration** - Modify APT stages to work within mock
- [ ] **Testing Framework** - Create integration test suite
### Implementation Phases:
#### Phase 8.1: Basic Integration (Weeks 1-4)
- [ ] **Mock Stage Creation**
- [ ] Create `org.osbuild.deb-mock` stage implementation
- [ ] Implement mock environment provisioning
- [ ] Add configuration mapping between debian-forge and deb-mock
- [ ] Create mock environment lifecycle management
- [ ] **APT Stage Modification**
- [ ] Modify existing APT stages to work within mock chroots
- [ ] Implement command execution through mock's chroot system
- [ ] Add environment variable and mount point management
- [ ] **Basic Testing**
- [ ] Create integration test manifests
- [ ] Test simple Debian image builds with mock
- [ ] Validate artifact collection and output
#### Phase 8.2: Advanced Integration (Weeks 5-8)
- [ ] **Plugin System Integration**
- [ ] Integrate with deb-mock's plugin architecture
- [ ] Create debian-forge specific plugins
- [ ] Implement caching and optimization plugins
- [ ] **Multi-Environment Support**
- [ ] Extend mock configuration for different Debian suites
- [ ] Add cross-architecture build support through mock
- [ ] Implement environment-specific optimizations
- [ ] **Performance Optimization**
- [ ] Implement build environment caching
- [ ] Add parallel build support with mock
- [ ] Optimize package installation and dependency resolution
#### Phase 8.3: Production Integration (Weeks 9-12)
- [ ] **CI/CD Integration**
- [ ] Update CI workflows to use mock environments
- [ ] Add build environment management to CI
- [ ] Implement automated testing and validation
- [ ] **Advanced Features**
- [ ] Implement build environment snapshots
- [ ] Add debugging and troubleshooting tools
- [ ] Create comprehensive monitoring and logging
### Technical Requirements:
#### 1. Mock Stage Implementation
- [ ] Create `stages/org.osbuild.deb-mock.py`
- [ ] Implement mock environment creation and management
- [ ] Add package installation within mock environments
- [ ] Implement artifact collection from mock environments
#### 2. Configuration Integration
- [ ] Extend manifest format to support mock configuration
- [ ] Add mock environment options to existing stages
- [ ] Implement configuration validation for mock integration
#### 3. Environment Management
- [ ] Create `MockEnvironmentManager` class
- [ ] Implement environment lifecycle (create, populate, cleanup)
- [ ] Add environment caching and reuse
- [ ] Implement parallel environment management
### Dependencies:
- [ ] **deb-mock API** - Integration with deb-mock's Python API
- [ ] **Mock Configuration** - YAML configuration for mock environments
- [ ] **Chroot Management** - Integration with deb-mock's chroot system
- [ ] **Plugin System** - Integration with deb-mock's plugin architecture
### Success Criteria:
- [ ] **Mock Integration** - debian-forge stages work within mock environments
- [ ] **Performance Improvement** - Build performance improved through caching
- [ ] **Isolation** - Enhanced build isolation and reproducibility
- [ ] **CI/CD Integration** - Mock environments integrated with CI/CD pipeline
- [ ] **Documentation** - Comprehensive documentation for mock integration
- [ ] **Testing** - Full test coverage for mock integration
### Estimated Timeline:
- **Phase 8.1**: 4 weeks (Basic integration)
- **Phase 8.2**: 4 weeks (Advanced features)
- **Phase 8.3**: 4 weeks (Production integration)
- **Total**: 12 weeks
### Priority:
**Medium** - Mock integration provides significant benefits but is not critical for basic functionality.