Skip to main content

colcon-gha-visualize

A colcon extension that visualizes build job execution timelines using Mermaid gantt charts, with automatic GitHub Actions Step Summary integration.

Features

  • Automatic Timeline Visualization: Generates Mermaid gantt charts showing when each job starts and ends
  • Smart Lane Allocation: Automatically arranges parallel jobs in separate lanes to clearly show parallelism
  • GitHub Actions Integration: Automatically outputs charts to GITHUB_STEP_SUMMARY when running in GitHub Actions
  • Build Statistics: Displays max parallelism, lane usage, and total job count
  • Job Status Visualization: Color-coded job results (success, failed, aborted)

Installation

# Using pip
pip install colcon-gha-visualize

# Using uv on development version
uv pip install -e .

Usage

The extension automatically activates as a colcon event handler. Simply run your colcon build commands as usual:

colcon build

To explicitly disable other event handlers and only use this one, run:

colcon build --event-handlers visualize-

Output

The chart will be:

  • Written to GitHub Step Summary (if GITHUB_STEP_SUMMARY environment variable is set)

Example Output

When running in GitHub Actions, you'll see a gantt chart like this in the Step Summary:

gantt
    title Colcon Build Timeline
    dateFormat HH:mm:ss
    axisFormat %H:%M:%S
    section Lane 1
    pkg_a : done, 00:00:00, 5000ms
    pkg_d : done, 00:00:05, 3000ms
    section Lane 2
    pkg_b : done, 00:00:01, 4000ms
    pkg_e : crit, 00:00:05, 2000ms
    section Lane 3
    pkg_c : done, 00:00:02, 3000ms

Build Statistics

The extension also outputs:

  • Max Parallelism: The maximum number of jobs running simultaneously
  • Lanes Used: Number of lanes needed to visualize all parallel jobs
  • Total Jobs: Total number of jobs in the build

How It Works

Lane Allocation Algorithm

The extension uses an intelligent lane allocation algorithm to arrange parallel jobs:

  1. Jobs are sorted by start time
  2. For each job, the algorithm finds the first available lane (where the previous job has ended)
  3. If no lane is available, a new lane is created
  4. This ensures jobs never overlap in the visualization while minimizing the number of lanes

Job Status Colors

  • Green (done): Successful builds
  • Red (crit): Failed or aborted builds
  • Blue (active): Test failures

GitHub Actions Example

name: Build ROS Workspace

on: [push, pull_request]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - name: Install dependencies
        run: |
          pip install colcon-common-extensions
          pip install colcon-gha-visualize

      - name: Build workspace
        run: |
          colcon build

The gantt chart will automatically appear in the job's Step Summary.

Development

Requirements

  • Python >= 3.8
  • colcon-core >= 0.20.1

License

Apache License 2.0

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Metadata

Release files for colcon-gha-visualize 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for colcon-gha-visualize 0.1.0
File Size Uploaded
colcon_gha_visualize-0.1.0.tar.gz 60.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for colcon-gha-visualize 0.1.0
File Interpreter ABI Platform
colcon_gha_visualize-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 71.0 kB

Release files / colcon_gha_visualize-0.1.0.tar.gz

Download URL colcon_gha_visualize-0.1.0.tar.gz
Size 60.6 kB
Tags Source
SHA-256 checksum
How to use checksums
3aff7654e48405420ac0782454e4648bc1b2a99fa70a6dd358335627975f2555
BLAKE2b-256 checksum
How to use checksums
f041747267a09734a4ab535f081012aa173df23751f89f0496e4bd2c777838a8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.9.9 {"installer":{"name":"uv","version":"0.9.9"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / colcon_gha_visualize-0.1.0-py3-none-any.whl

Download URL colcon_gha_visualize-0.1.0-py3-none-any.whl
Size 10.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1584d4a543e2c3798883230a16ac6b92c6f0be1430806452abae78a4bea76bd6
BLAKE2b-256 checksum
How to use checksums
edc9efe55beed35acc611583623e842c42c70607a64078f8931d6ce3fbf792fa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.9.9 {"installer":{"name":"uv","version":"0.9.9"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page