Skip to content

Instantly share code, notes, and snippets.

@jerry73204
Created August 28, 2025 15:09
Show Gist options
  • Save jerry73204/e338419edaa7dde625ce73cd73ad1115 to your computer and use it in GitHub Desktop.
Save jerry73204/e338419edaa7dde625ce73cd73ad1115 to your computer and use it in GitHub Desktop.

Comparison Report: autoware-deb-packages vs colcon2deb

Tool Overview

autoware-deb-packages (ROS Buildfarm Approach)

  • 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

colcon2deb

  • 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 Comparison Table

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

Architectural Comparison

autoware-deb-packages Architecture

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

colcon2deb Architecture

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 and Weaknesses

autoware-deb-packages

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

colcon2deb

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

Use Case Recommendations

Use autoware-deb-packages when:

  1. Standard Autoware deployment - Community-compatible packages
  2. Open source projects - Free GitHub Actions for public repos
  3. Automated releases - CI/CD pipeline included
  4. Small team/limited infrastructure - No local resources needed
  5. Distribution to community - Automatic APT repository
  6. Following ROS standards - Bloom and buildfarm compatibility
  7. Multi-platform builds - Matrix builds for different architectures

Use colcon2deb when:

  1. Building proprietary or modified Autoware versions - Full control over build process
  2. Large packages (>100MB) - No size limitations
  3. Complex build requirements - Custom Docker images and network access
  4. On-premise requirements - No cloud dependencies
  5. Rapid iteration - Direct debugging and immediate local builds
  6. Resource-intensive builds - Unlimited build time
  7. Custom dependency management - Network access for special repositories

Security Considerations

autoware-deb-packages:

  • GitHub's security infrastructure
  • Automated security updates for Actions
  • Transparent build logs
  • Limited control over runner environment

colcon2deb:

  • Runs with local user permissions
  • Docker daemon access required (security implications)
  • Package signing manual
  • Full control over build environment security

Conclusion

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment