Octo + GitHub Actions
Run your CI workflows on your own hardware.
Trigger, monitor, and manage Octo jobs directly from GitHub.
Why Use Octo with GitHub Actions?
Octo transforms your own infrastructure into a powerful CI/CD execution layer, eliminating expensive cloud runner costs while maximizing your hardware investment.
Efficient Infrastructure Utilization
Instead of paying per-minute for cloud runners, leverage your existing servers and hardware. Octo lets you run CI/CD jobs directly on your infrastructure, ensuring 100% utilization of your compute resources.
Eliminate Cloud Runner Costs
GitHub Actions cloud runners are expensive and limited. With Octo, you eliminate per-minute billing and runner queuing. Your infrastructure becomes your CI/CD powerhouse — fully under your control.
Unlimited Parallelism
Scale your CI/CD pipelines without hitting runner limits or paying premium rates. Run hundreds of parallel jobs across your infrastructure — limited only by your hardware.
Full Control & Security
Keep your code and data on your own infrastructure. No data leaving your network, no vendor lock-in, complete transparency in how your CI/CD pipeline executes.
The Cost Advantage
GitHub Actions Cloud Runners: $0.008 per minute per runner (can add up fast)
Octo on Your Hardware: Fixed infrastructure cost, unlimited CI/CD runs
For teams running hundreds of CI/CD jobs monthly, Octo can save thousands in runner costs.
One-click Runs
Trigger Octo jobs directly from a GitHub workflow with a single command.
Fully Utilize Your Infrastructure
Unleash the full potential of your infrastructure — no cloud limits, no wasted compute.
Parallel Execution
Run multiple Octo jobs in parallel to dramatically speed up CI pipelines.
Overview — Integrating Octo into GitHub Workflows
Octo seamlessly integrates with GitHub Actions, allowing you to run your CI/CD workflows on your own hardware. You can add more runners if you need additional parallelism or want to distribute workloads across different environments. It's also possible to set up Octo in a cluster configuration to scale out execution even further.
Example: Octo + Github setup with multiple parallel runners.
Example: Octo + Github cluster setup with multiple parallel runners.
How Octo supercharges your CI/CD pipeline
Octo seamlessly integrates with GitHub Actions, transforming your own infrastructure into a high-performance execution layer for fast, efficient, and fully controlled automation.
Parallel Execution
When triggered manually, the Smoketest Workflow runs two regional jobs — one for Europe and one for China — in parallel, directly on your self-hosted Windows Octo runner.
Use Your Own Power
Skip cloud queues and runner limits — Octo connects GitHub Actions to your real computing power. Each region runs independently using its own secure token and isolated environment.
Instant Results
Once both runs are complete, Octo automatically uploads all test reports back to GitHub, giving you instant, centralized insights — right where you work.
Watch how to use Github with Octo
Example GitHub Actions Workflow
Below is a complete example of how Octo can run two regions in parallel within a single CI job.
📄 View Full Workflow Example
name: Smoketest Workflow
on:
workflow_dispatch:
inputs:
region:
description: 'Region to test (optional, default: all)'
required: false
default: 'all'
jobs:
test_parallel:
runs-on: [self-hosted, windows, x64, octo]
env:
TOKEN_EU: token1
TOKEN_CHINA: token2
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run both regions in parallel
shell: powershell
run: |
chcp 65001 > $null
$repoPath = (Get-Location).Path
Write-Host "Repo path: $repoPath"
# EU Run
Start-Job -Name EU -ArgumentList $repoPath -ScriptBlock {
param($p)
Set-Location $p
Write-Host ">>> EU run starting in $p"
$env:TOKEN = "token1"
octo login --token $env:TOKEN --server http://127.0.0.1:5000
octo run main.py
Copy-Item report.html "report_EU.html" -Force
Write-Host ">>> EU done"
}
# China Run
Start-Job -Name China -ArgumentList $repoPath -ScriptBlock {
param($p)
Set-Location $p
Write-Host ">>> China run starting in $p"
$env:TOKEN = "token2"
octo login --token $env:TOKEN --server http://127.0.0.1:5000
octo run main.py
Copy-Item report.html "report_China.html" -Force
Write-Host ">>> China done"
}
Write-Host "Waiting for both runs..."
Get-Job | Wait-Job
Get-Job | Receive-Job
Write-Host "All done!"
- name: Upload both reports
uses: actions/upload-artifact@v4
with:
name: smoketest-reports
path: |
report_EU.html
report_China.html