Skip to content

Instantly share code, notes, and snippets.

@mrpollo
Last active February 13, 2026 14:14
Show Gist options
  • Select an option

  • Save mrpollo/f8118a5cb36f12238d3261ba563115ec to your computer and use it in GitHub Desktop.

Select an option

Save mrpollo/f8118a5cb36f12238d3261ba563115ec to your computer and use it in GitHub Desktop.
PX4 CI Orchestrator Cost Estimation Report - Feb 13, 2026

PX4 CI Orchestrator Cost Report

Summary

Analyzed 20 workflow runs of the ci-orchestrator.yml workflow on PX4/PX4-Autopilot (branch mrpollo/ci_orchestration), spanning Jan 13 - Feb 13, 2026.

Data source: RunsOn show_costs: inline post-job output from each job's logs, GitHub Actions job timestamps, and GitHub-hosted runner pricing.

Note: PX4-Autopilot is a public open-source repository. GitHub provides free GitHub Actions minutes for public repos, so the macOS and Ubuntu GitHub-hosted runner jobs have $0 actual cost to the project. The "GitHub equivalent" costs shown are what these would cost on a private repository for reference. The only real costs are the RunsOn (AWS) self-hosted runner charges.

Run Overview

# Run ID Date Status Wall Clock RunsOn Cost macOS Duration Total Actual Cost
1 21987781018 Feb 13 13:01 success 65 min $0.6351 16.0 min $0.64
2 21987600582 Feb 13 12:54 cancelled 7 min $0.0377 -- $0.04
3 21977430779 Feb 13 06:42 success 62 min $0.5597 12.1 min $0.56
4 21972076719 Feb 13 02:15 success 61 min $0.5014 14.0 min $0.50
5 21964305474 Feb 12 21:07 success 70 min $0.5543 19.4 min $0.55
6 21051960290 Jan 16 01:04 success 59 min $0.4374 12.1 min $0.44
7 21009236117 Jan 14 20:44 success 56 min $0.4814 12.2 min $0.48
8 21006944056 Jan 14 19:23 success 74 min $0.5749 20.6 min $0.57
9 21004439949 Jan 14 17:56 failure 80 min $0.5234 ~10 min $0.52
10 21003045804 Jan 14 17:10 cancelled 71 min $0.4936 ~10 min $0.49
11 21000206124 Jan 14 15:43 failure 75 min $0.5871 ~10 min $0.59
12 20976558806 Jan 13 23:36 failure 51 min $0.5319 ~10 min $0.53
13 20975349444 Jan 13 22:46 cancelled 55 min $0.2454 -- $0.25
14 20975186700 Jan 13 22:39 failure <1 min $0.00 -- $0.00
15 20972912202 Jan 13 21:17 failure 60 min $0.4115 ~10 min $0.41
16 20971986915 Jan 13 20:45 failure 22 min $0.2059 -- $0.21
17 20970425451 Jan 13 19:50 failure 25 min $0.1809 -- $0.18
18 20969770056 Jan 13 19:28 cancelled 27 min $0.1745 -- $0.17
19 20969503269 Jan 13 19:19 cancelled 9 min $0.0464 -- $0.05
20 20969106687 Jan 13 19:05 cancelled 13 min $0.0000 -- $0.00

Grand Totals across all 20 runs:

  • RunsOn compute cost (actual AWS spend): $7.18
  • GitHub-hosted runners (macOS + Ubuntu): $0.00 (free for public repos)
  • Total actual cost: ~$7.18

If this were a private repo, GitHub-hosted runner costs would add ~$22.79, bringing the total to ~$29.97.

Detailed Breakdown: Run #1 (21987781018) - Latest Successful Run

This is the most recent and complete run with the full tiered orchestrator structure including Clang-Tidy. All jobs succeeded. Wall clock: 65 minutes (13:01 - 14:06 UTC).

Tier 1: Linting & Gate Checks (GitHub-hosted ubuntu-latest, FREE)

Job Duration
Gate Checks [check_newlines] 2.47 min
Gate Checks [check_format] 1.53 min
Shellcheck 1.85 min
MAVSDK Python [flake8] 0.35 min
MAVSDK Python [mypy] 0.33 min
T1 Subtotal ~6.5 min, $0.00

Tier 2: Build & Analysis (RunsOn)

Job Instance Lifecycle Duration RunsOn Cost GH Equivalent (private repo)
Build SITL Cache Seed m7i-flex.xlarge on-demand 5.25 min $0.0167 $0.0960
Clang-Tidy Static Analysis m7i.4xlarge spot 10.76 min $0.0610 $0.7040
EKF Change Detection m7i-flex.xlarge on-demand 9.04 min $0.0289 $0.1600
Basic Tests [tests] m7i-flex.xlarge on-demand 9.30 min $0.0297 $0.1600
Basic Tests [validate_module_configs] m7i-flex.xlarge on-demand 2.13 min $0.0068 $0.0480
Basic Tests [module_documentation] m7i-flex.xlarge on-demand 2.35 min $0.0075 $0.0480
T2 Subtotal 38.83 min $0.1506 $1.2160

Tier 3: Platform Builds & Flash Analysis (Mixed runners)

Job Instance Lifecycle Duration RunsOn Cost GH Equivalent (private repo)
macOS Build macos-15-arm64 GitHub-hosted (FREE) 16.00 min $0.00 $2.56
Ubuntu Build [ubuntu:22.04] m7i-flex.xlarge on-demand 5.40 min $0.0172 $0.0960
Ubuntu Build [ubuntu:24.04] m7i-flex.xlarge on-demand 5.69 min $0.0182 $0.0960
Flash Analysis [px4_fmu-v5x] m7i-flex.xlarge on-demand 7.14 min $0.0228 $0.1280
Flash Analysis [px4_fmu-v6x] m7i-flex.xlarge on-demand 7.26 min $0.0232 $0.1280
ITCM Check [px4_fmu-v5x_default] m7i-flex.xlarge on-demand 7.35 min $0.0235 $0.1280
ITCM Check [px4_fmu-v6xrt_default] m7i-flex.xlarge on-demand 9.03 min $0.0288 $0.1600
ITCM Check [nxp_mr-tropic_default] m7i-flex.xlarge on-demand 8.71 min $0.0278 $0.1440
ITCM Check [nxp_tropic-community_default] m7i-flex.xlarge on-demand 8.65 min $0.0276 $0.1440
Failsafe Web Simulator m7i-flex.xlarge on-demand 2.99 min $0.0095 $0.0480
Publish Flash Analysis Results m7a.medium spot 0.55 min $0.0002 $0.0040
T3 Subtotal 78.77 min $0.1988 $3.6360

Tier 4: Integration & Simulation Tests (RunsOn)

Job Instance Lifecycle Duration RunsOn Cost GH Equivalent (private repo)
ROS Integration Tests m7i-flex.xlarge on-demand 31.53 min $0.1006 $0.5120
SITL Tests [iris] m7i-flex.xlarge on-demand 14.52 min $0.0464 $0.2400
ROS Translation Node [jazzy] m7i-flex.xlarge on-demand 13.02 min $0.0416 $0.2240
ROS Translation Node [humble] m7i-flex.xlarge on-demand 13.24 min $0.0423 $0.2240
MAVROS Tests [Mission] m7i-flex.xlarge on-demand 7.47 min ~$0.0239 ~$0.1280
MAVROS Tests [Offboard] m7i-flex.xlarge on-demand 7.82 min ~$0.0250 ~$0.1280
T4 Subtotal 87.60 min $0.2798 $1.4560

CI Summary (GitHub-hosted ubuntu-latest, FREE)

Job Duration
CI Summary 0.03 min

Run #1 Total

Category Actual Cost
RunsOn compute (T2 + T3 + T4) $0.6292
MAVROS estimated (no RunsOn post step) ~$0.05
GitHub-hosted runners (macOS + Ubuntu) $0.00 (free, public repo)
Run #1 Actual Total ~$0.68
If all jobs ran on GitHub (private repo pricing) ~$6.36
RunsOn savings vs GitHub private repo ~$3.12 (83% on RunsOn jobs)

Runner Infrastructure

RunsOn (Self-hosted AWS) - Paid Jobs

Instance Type Lifecycle vCPU RAM Used For
m7i-flex.xlarge on-demand 4 16 GB ~90% of jobs (builds, tests, analysis, SITL, ROS)
m7i.4xlarge spot 16 64 GB Clang-Tidy Static Analysis
m7a.medium spot 1 4 GB Publish Flash Analysis Results

GitHub-Hosted Runners (FREE for public repos)

Runner Used For Private Repo Rate
ubuntu-latest T1: Gate Checks, Shellcheck, MAVSDK Python linting (5 jobs) $0.008/min
macos-15-arm64 T3: macOS Build $0.16/min
ubuntu-latest CI Summary $0.008/min

Per-Job Cost Breakdown (Averages Across Successful Runs)

Tier 1: Linting & Gate Checks (GitHub-hosted, FREE, parallel, ~2.5 min wall clock)

Job Avg Duration Runner
Gate Checks [check_format] ~1.5 min ubuntu-latest
Gate Checks [check_newlines] ~2.3 min ubuntu-latest
Shellcheck ~1.9 min ubuntu-latest
MAVSDK Python [flake8] ~0.3 min ubuntu-latest
MAVSDK Python [mypy] ~0.3 min ubuntu-latest

Tier 2: Build & Analysis (RunsOn, ~$0.09-0.15)

Job Avg Duration Instance Avg Cost
Build SITL Cache Seed ~4.5 min m7i-flex.xlarge ~$0.014
Clang-Tidy Static Analysis ~10.5 min m7i.4xlarge (spot) ~$0.057
EKF Change Detection ~9.5 min m7i-flex.xlarge ~$0.030
Basic Tests [tests] ~9.2 min m7i-flex.xlarge ~$0.029
Basic Tests [validate_module_configs] ~2.1 min m7i-flex.xlarge ~$0.007
Basic Tests [module_documentation] ~2.2 min m7i-flex.xlarge ~$0.007
T2 Total ~$0.09-0.15

Note: Clang-Tidy only appears in the 2 most recent runs (21987781018, 21977430779). Older runs did not include it. Without Clang-Tidy, T2 costs ~$0.09.

Tier 3: Platform Builds & Flash Analysis (RunsOn portion, ~$0.20)

Job Avg Duration Instance Avg Cost
macOS Build ~15 min macos-15-arm64 (FREE) $0.00
Ubuntu Build [ubuntu:22.04] ~4.8 min m7i-flex.xlarge ~$0.015
Ubuntu Build [ubuntu:24.04] ~5.4 min m7i-flex.xlarge ~$0.017
Flash Analysis [px4_fmu-v5x] ~7.2 min m7i-flex.xlarge ~$0.023
Flash Analysis [px4_fmu-v6x] ~7.0 min m7i-flex.xlarge ~$0.022
ITCM Check [px4_fmu-v5x] ~7.6 min m7i-flex.xlarge ~$0.024
ITCM Check [px4_fmu-v6xrt] ~8.9 min m7i-flex.xlarge ~$0.028
ITCM Check [nxp_mr-tropic] ~8.3 min m7i-flex.xlarge ~$0.026
ITCM Check [nxp_tropic-community] ~8.3 min m7i-flex.xlarge ~$0.026
Failsafe Web Simulator ~2.8 min m7i-flex.xlarge ~$0.009
Publish Flash Analysis Results ~0.6 min m7a.medium (spot) ~$0.000
T3 RunsOn Total ~$0.19

Tier 4: Integration & Simulation Tests (RunsOn, ~$0.28)

Job Avg Duration Instance Avg Cost
ROS Integration Tests 31.5 min m7i-flex.xlarge ~$0.101
SITL Tests [iris] ~14.2 min m7i-flex.xlarge ~$0.045
ROS Translation Node [jazzy] ~13.4 min m7i-flex.xlarge ~$0.043
ROS Translation Node [humble] ~13.0 min m7i-flex.xlarge ~$0.041
MAVROS Tests [Mission] ~8.0 min m7i-flex.xlarge ~$0.026
MAVROS Tests [Offboard] ~8.2 min m7i-flex.xlarge ~$0.026
T4 Total ~$0.28

Actual Cost per Successful Run

Since PX4-Autopilot is a public repo, only RunsOn (AWS) costs are real:

Category Actual Cost % of Total
T2: Build & Analysis (RunsOn) ~$0.15 27%
T3: Platform Builds (RunsOn) ~$0.19 35%
T4: Integration Tests (RunsOn) ~$0.28 51%
T1 + macOS + CI Summary (GitHub, free) $0.00 0%
MAVROS (RunsOn, estimated) ~$0.05 9%
Total per successful run ~$0.57 --

Cost Distribution by Job Type

ROS Integration Tests  ████████████████████  $0.101 (18%)
Clang-Tidy            ███████████           $0.057 (10%)
SITL Tests [iris]     █████████             $0.045 (8%)
ROS Node [jazzy]      ████████              $0.043 (8%)
ROS Node [humble]     ████████              $0.041 (7%)
EKF Change Detection  ██████                $0.030 (5%)
Basic Tests [tests]   ██████                $0.029 (5%)
ITCM [v6xrt]          █████                 $0.028 (5%)
ITCM [nxp_mr-tropic]  █████                 $0.028 (5%)
ITCM [nxp_tropic-com] █████                 $0.026 (5%)
MAVROS [Mission]      █████                 $0.026 (5%)
MAVROS [Offboard]     █████                 $0.026 (5%)
ITCM [v5x]            ████                  $0.024 (4%)
Flash Analysis [v5x]  ████                  $0.023 (4%)
Flash Analysis [v6x]  ████                  $0.022 (4%)
Ubuntu [ubuntu:24.04] ███                   $0.017 (3%)
Build SITL Cache      ███                   $0.014 (2%)
Ubuntu [ubuntu:22.04] ███                   $0.015 (3%)
Failsafe Web Sim      ██                    $0.009 (2%)
Module Docs           █                     $0.007 (1%)
Validate Configs      █                     $0.007 (1%)
Publish Flash         ▏                     $0.000 (0%)

RunsOn vs GitHub Pricing Comparison (Reference)

The RunsOn show_costs: inline output includes a "GitHub equivalent cost" for each job. While GitHub-hosted runners are free for this public repo, this comparison shows what RunsOn saves relative to private repo pricing:

Tier RunsOn Cost GitHub Private Equivalent Savings
T2 (Build & Analysis) $0.1506 $1.2160 $1.07 (88%)
T3 (RunsOn jobs only) $0.1988 $1.0760 $0.88 (82%)
T4 (Integration Tests) $0.2798 $1.4560 $1.18 (81%)
Total RunsOn jobs $0.6292 $3.7480 $3.12 (83%)

Key Findings

  1. Actual cost per successful run is ~$0.57 -- since GitHub-hosted runners (macOS, Ubuntu) are free for public repos, the only real cost is RunsOn AWS compute. The macOS build, while expensive at $0.16/min on private repos, costs $0 here.

  2. ROS Integration Tests is the most expensive job -- at ~$0.10/run (31.5 min on m7i-flex.xlarge), it accounts for ~18% of the total RunsOn spend and sits on the critical path determining wall-clock time (~60-74 min total).

  3. T4 (Integration Tests) is the most expensive tier -- at ~$0.28/run (51% of total cost), with 6 parallel jobs running simulation and ROS tests.

  4. RunsOn saves ~83% vs GitHub private pricing -- across all RunsOn jobs, actual cost is $0.63 vs $3.75 GitHub equivalent. Spot instances (Clang-Tidy, Publish) save ~91-94%.

  5. Tiered gating limits wasted spend -- cancelled/early-failure runs cost $0.04-$0.25 vs $0.50-$0.64 for full runs. The orchestrator's T1->T2->T3->T4 gates catch failures early before expensive T4 jobs run.

  6. Clang-Tidy is a recent addition -- only present in the 2 most recent runs, using a 16-vCPU spot instance (m7i.4xlarge). At ~$0.06/run it's the 2nd most expensive single job but well-optimized via spot pricing.

  7. MAVROS tests lack cost reporting -- they run on RunsOn (m7i-flex.xlarge) but don't have the runs-on/action@v2 post step, so costs are estimated from duration and instance type (~$0.025 each).

  8. Total actual spend across all 20 analyzed runs: ~$7.18 -- all RunsOn AWS compute. Average wall clock for successful runs: ~63 min across 29 jobs in 4 tiers.


Report generated Feb 13, 2026 by analyzing RunsOn cost summaries from job logs (show_costs: inline) and GitHub Actions runner metadata across 20 workflow runs of ci-orchestrator.yml on PX4/PX4-Autopilot.

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