- Architecture: GitHub Actions integrated with ROS buildfarm infrastructure
- Approach: Cloud-based CI/CD pipeline leveraging GitHub's infrastructure
- Primary Use Case: Standard Autoware distributions with community-wide compatibility
- Architecture: Standalone tool using Docker containers for isolated builds
- Approach: Local/self-hosted building with full control over the build environment
- Primary Use Case: Organizations needing custom Debian packages with specific configurations
Feature | colcon2deb | autoware-deb-packages |
---|---|---|
Build Environment | Docker containers (isolated) | GitHub Actions + sbuild |
Infrastructure Required | Local machine with Docker | GitHub repository + Actions minutes |
Configuration Format | YAML config file | repos file + GitHub workflow YAML |
Remote Dockerfile Support | ✅ Yes (URL download) | ❌ No (uses predefined environments) |
Custom Image Support | ✅ Yes (any Docker image) | Limited (sbuild base images) |
Package Override Support | ✅ Yes (debian-overrides directory) | ✅ Yes (via bloom configurations) |
Parallel Build Support | ✅ Configurable (1-N jobs) | ✅ Yes (GitHub runners) |
Architecture Support | amd64, arm64 | amd64, arm64 (via matrix builds) |
ROS Version Support | ROS 2 Humble, Iron, etc. | ROS 1 & 2 (multiple distros) |
Build Caching | Docker layer caching | ccache + artifact caching |
Network Access During Build | ✅ Available | ❌ Denied (Debian policy 4.9) |
Output Format | .deb files in local directory | APT repository in GitHub branch |
Distribution Method | Manual/custom APT repo | GitHub Pages/branches as APT repo |
Build Time Limit | Unlimited (local) | 6 hours (GitHub Actions limit) |
Cost | Free (local resources) | Free tier + Actions minutes |
Setup Complexity | Low (Docker + Python) | Medium (GitHub setup + workflows) |
Reproducibility | High (Docker images) | High (sbuild chroots) |
Private Repository Support | ✅ Full support | ✅ With GitHub token |
Bloom Integration | ✅ Uses bloom-generate | ✅ Native bloom support |
Custom Build Scripts | ✅ Bash helper scripts | Limited (workflow steps) |
Debugging Capability | ✅ Direct Docker access | Limited (logs only) |
Dependency Resolution | rosdep + custom mappings | rosdep + ROS buildfarm |
Cross-compilation | Via Docker images | Via sbuild architectures |
GitHub Repo → GitHub Actions → sbuild → APT Repository
↓ ↓ ↓ ↓
Source Code Workflow Chroot Build GitHub Branch
Key Components:
- GitHub Actions workflows
- ros-deb-builder-action
- sbuild for clean builds
- bloom for package generation
- Automatic APT repository creation
Host Machine → Docker Container → Build Process → .deb Files
↓ ↓ ↓ ↓
Python CLI Isolated Env Bash Scripts Local Output
Key Components:
- Host-side Python orchestrator (
colcon2deb.py
) - Container-side bash scripts (
helper/
) - Docker-based isolation
- Read-only source mounts
- Two-program architecture (host/container split)
Strengths:
- Zero infrastructure requirements
- Automatic CI/CD integration
- Built-in APT repository hosting
- Community standard (ROS buildfarm)
- Automatic updates via GitHub Actions
- Multi-distribution support
- Professional sbuild isolation
Weaknesses:
- 6-hour build time limit
- 100MB file size limit
- No network access during builds
- Less flexibility in build environment
- Requires GitHub Actions minutes for large builds
- Cannot use custom Docker images directly
Strengths:
- Complete control over build environment
- No external service dependencies
- Supports custom Docker images and configurations
- Unlimited build time and package size
- Direct debugging access via Docker
- Flexible package override system
- Works with any colcon workspace
- Network access during builds (for downloading dependencies)
Weaknesses:
- Requires local computational resources
- Manual distribution of packages
- No built-in CI/CD
- Requires Docker installation and permissions
- Less integration with ROS ecosystem standards
- Standard Autoware deployment - Community-compatible packages
- Open source projects - Free GitHub Actions for public repos
- Automated releases - CI/CD pipeline included
- Small team/limited infrastructure - No local resources needed
- Distribution to community - Automatic APT repository
- Following ROS standards - Bloom and buildfarm compatibility
- Multi-platform builds - Matrix builds for different architectures
- Building proprietary or modified Autoware versions - Full control over build process
- Large packages (>100MB) - No size limitations
- Complex build requirements - Custom Docker images and network access
- On-premise requirements - No cloud dependencies
- Rapid iteration - Direct debugging and immediate local builds
- Resource-intensive builds - Unlimited build time
- Custom dependency management - Network access for special repositories
- GitHub's security infrastructure
- Automated security updates for Actions
- Transparent build logs
- Limited control over runner environment
- Runs with local user permissions
- Docker daemon access required (security implications)
- Package signing manual
- Full control over build environment security
Both colcon2deb and autoware-deb-packages serve important roles in the Autoware ecosystem:
-
colcon2deb excels at providing a flexible, locally-controlled build environment suitable for custom configurations, large packages, and organizations with specific requirements.
-
autoware-deb-packages leverages the ROS buildfarm infrastructure and GitHub Actions to provide a standardized, cloud-based solution ideal for community distributions and open-source projects.
The choice between them depends on specific project requirements, infrastructure availability, and integration needs. Many organizations may benefit from using both tools at different stages of their development and release pipeline.
Last updated: 2025-08-28
Based on colcon2deb v0.2.0 and current autoware-deb-packages implementation