Skip to content

feat: Debian package distribution with vendored IXWebSocket and CI optimization#1

Merged
facontidavide merged 3 commits intomainfrom
debians
Feb 11, 2026
Merged

feat: Debian package distribution with vendored IXWebSocket and CI optimization#1
facontidavide merged 3 commits intomainfrom
debians

Conversation

@facontidavide
Copy link
Contributor

Summary

Complete implementation of Debian package building infrastructure for ROS2 distributions (Humble, Jazzy, Kilted, Rolling) with optimized IXWebSocket vendoring and improved CI/CD pipeline.

Changes

Debian Distribution (Bloom Integration)

  • Automated Debian package building for Humble/Jazzy/Kilted/Rolling distributions
  • Multi-distro GitHub Actions matrix workflow
  • Automatic GitHub Release creation with .deb artifacts

Vendored IXWebSocket Library

  • Vendored IXWebSocket v11.4.6 in 3rdparty/ixwebsocket/
  • Configurable CMake flag: USE_VENDORED_IXWEBSOCKET (default: ON)
  • Fallback to system-provided library when disabled (conan, vcpkg, etc.)
  • Solves FetchContent incompatibility with Debian's network isolation
  • 80% size reduction: 3.5MB → 684KB (removed tests, docs, CI configs, examples)

CI/CD Optimization

  • Added concurrency configuration to all workflows
  • Automatically cancels in-progress jobs on new commits to same branch
  • Reduces wasted CI resources and provides faster feedback
  • Applies to release-debs, ros-humble, ros-jazzy, ros-rolling workflows

Package Metadata

  • Updated package.xml with author and repository URLs
  • Created CHANGELOG.rst documenting v0.1.0 release

Test Plan

  • Local build with vendored library succeeds
  • All 4 distro builds pass in CI (Humble, Jazzy, Kilted, Rolling)
  • GitHub Release created with all .deb artifacts
  • Concurrency works: new commits cancel previous jobs

Commits

  • 31ec488 docs: Add CHANGELOG and improve package.xml metadata
  • c4aee51 ci: Add debian package release workflow
  • 00eb49a fix: CI workflow path handling for debian builds
  • 96df354 ci: Pre-build IXWebSocket for debian builds
  • 1f178ea refactor: Vendor IXWebSocket in 3rdparty/ with configurable CMake flag
  • 839fb06 refactor: Remove unnecessary files from vendored ixwebsocket
  • 5b38fe7 ci: Add concurrency to abort jobs on new commits

🤖 Generated with Claude Code

facontidavide and others added 3 commits February 11, 2026 12:49
Cleaned up vendored IXWebSocket library (3rdparty/ixwebsocket) by removing:
- Test files and test infrastructure (test/, tools/)
- Documentation (docs/, README.md, SECURITY.md)
- Docker configuration (docker/, Dockerfile, docker-compose.yml, .dockerignore)
- CI/CD workflows (.github/workflows/)
- Development configuration files (.clang-format, .gitignore, .pre-commit-config.yaml)
- Example projects and wasm build directory (ws/)
- Third-party dependencies (third_party/)

Size reduction: 3.5MB → 684KB (80% reduction)

Kept only essential files:
- ixwebsocket/ (640K) - source code
- CMake/ (16K) - build configuration
- CMakeLists.txt - build rules
- LICENSE.txt - license information

This optimizes the repository size while maintaining full functionality. The vendored
library is used by default (USE_VENDORED_IXWEBSOCKET=ON) but can be disabled to use
system-provided ixwebsocket from package managers (conan, vcpkg, etc.).

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Entire-Checkpoint: cd706883ada1
Add concurrency configuration to all GitHub Actions workflows to automatically
cancel in-progress jobs when a new commit is pushed to the same branch or when
a new pull request event occurs.

Workflows updated:
- .github/workflows/release-debs.yaml
- .github/workflows/ros-humble.yaml
- .github/workflows/ros-jazzy.yaml
- .github/workflows/ros-rolling.yaml

Configuration:
- Group: workflow name + git ref (branch/tag)
- Behavior: cancel-in-progress jobs when new job queued

This prevents resource waste from running obsolete CI jobs and provides faster
feedback when multiple commits are pushed in quick succession.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Entire-Checkpoint: cd706883ada1
- Add AGPL v3.0 LICENSE file
- Add copyright headers to all 32 source files (Davide Faconti 2026)
- Update package.xml license metadata
- Add comprehensive license FAQ to README addressing:
  - Commercial use permissions
  - Proprietary software compatibility
  - Code sharing obligations
  - Internal use modifications
  - Network clause implications

The AGPL license ensures community improvements while allowing
unrestricted commercial use and not affecting other software on the system.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Entire-Checkpoint: e805cf64b481
@facontidavide facontidavide merged commit a8bcca8 into main Feb 11, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant