Skip to main content

Centralized CI/CD orchestration hub for multi-repository pipelines

Project description

CI/CD Hub

GitHub Actions Python Java codecov mutmut ruff bandit pip-audit zizmor License: Elastic 2.0

Centralized CI/CD for Java and Python repos with config-driven toggles, reusable workflows, and a single hub that runs pipelines across many repositories.

[!NOTE] Refactor In Progress - We're aligning CLI/registry integration and doc automation. Some commands may be incomplete. See STATUS.md for current state.


Why CI/CD Hub?

Problem Solution
Hours writing YAML per repo One CLI generates config + workflows in minutes
Copy-paste configs that drift 3-tier merge (defaults → hub → repo) keeps everything in sync
Manually configuring 10+ tools Schema-validated config with profiles that auto-configure tools
Debugging cryptic CI failures Triage bundles with prioritized, actionable reports

Who It's For

Audience Use Case
Hub/Org Admins Centralized standards across many repos
Teams Consistent CI gates across Python and Java
Maintainers Minimal YAML, reproducible workflows

Core Concepts

  • Hub repo: hosts defaults, templates, workflows, and repo configs.
  • Target repo: owns .ci-hub.yml for per-repo overrides.
  • Merge order: defaults → hub config → repo config (repo wins).

CLI Flow (Short)

# Guided onboarding (interactive)
python -m cihub setup

# Or generate config + workflow directly
python -m cihub init --repo . --apply

# Run CI locally (uses .ci-hub.yml)
python -m cihub ci

Execution Modes

  • Central mode: the hub clones repos and runs pipelines directly from a single workflow.
  • Distributed mode: the hub dispatches workflows to each repo via caller templates and reusable workflows.

Pre-Push Validation

Run local checks before pushing:

cihub check              # Fast: lint, format, type, test (~30s)
cihub check --audit      # + links, adr, configs (~45s)
cihub check --security   # + bandit, pip-audit, trivy, gitleaks (~2min)
cihub check --full       # + templates, matrix, license, zizmor (~3min)
cihub check --all        # Everything including mutation (~15min)

Other validation commands:

cihub validate --repo .          # Validate .ci-hub.yml against schema
cihub run ruff --repo .          # Run one tool, emit JSON
cihub verify --remote            # Verify workflow contracts (requires gh auth)
cihub docs generate              # Regenerate CLI/config reference docs
cihub docs check                 # Verify docs are up to date

Toolchains

Python

Category Tools
Testing pytest, Hypothesis
Linting Ruff, Black, isort
Types mypy
Security Bandit, pip-audit, Semgrep, Trivy
Mutation mutmut
Container Docker, SBOM

Java

Category Tools
Testing jqwik
Coverage JaCoCo
Quality Checkstyle, SpotBugs, PMD
Security OWASP Dependency-Check, Semgrep, Trivy
Mutation PITest
Container Docker, SBOM

Shared (Both Languages)

Semgrep, Trivy, CodeQL, SBOM, Docker

Quick Start

Central mode

# Run all repos
gh workflow run hub-run-all.yml -R jguida941/ci-cd-hub

# Run by group
gh workflow run hub-run-all.yml -R jguida941/ci-cd-hub -f run_group=fixtures

Distributed mode

  1. Create a PAT with repo + workflow scopes.
  2. Set HUB_DISPATCH_TOKEN via CLI:
python -m cihub setup-secrets --all
  1. In each target repo:
python -m cihub init --repo . --apply
  1. Set dispatch_enabled: true in config/repos/<repo>.yaml.

Prerequisites

  • Python 3.10+ (3.12 used in CI)
  • GitHub Actions for workflow execution
  • GitHub CLI (gh) recommended for dispatching workflows

Debugging & Triage

Analyze CI failures:

cihub triage --latest        # Triage most recent failed run
cihub triage --run <id>      # Triage specific run by ID

Environment flags for debugging:

Flag Effect
CIHUB_DEBUG=True Show tracebacks
CIHUB_VERBOSE=True Show tool logs
CIHUB_DEBUG_CONTEXT=True Show decision/context blocks
CIHUB_EMIT_TRIAGE=True Write triage bundle to .cihub/

Triage outputs: .cihub/triage.json, priority.json, triage.md

Installation (local development)

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements/requirements-dev.txt

Documentation

Doc Description
Docs Index Full map of guides, references, and development docs
Getting Started Primary entry point for new users
CLI Reference Generated from cihub docs generate
Config Reference Generated from schema
Tools Reference Tool registry and options
Troubleshooting Common issues and fixes
Development Guide Maintainer workflow
Current Status Refactor progress

Contributing

See CONTRIBUTING.md.

Security

See SECURITY.md.

License

Elastic License 2.0. See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cihub-1.0.9.tar.gz (481.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cihub-1.0.9-py3-none-any.whl (651.6 kB view details)

Uploaded Python 3

File details

Details for the file cihub-1.0.9.tar.gz.

File metadata

  • Download URL: cihub-1.0.9.tar.gz
  • Upload date:
  • Size: 481.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for cihub-1.0.9.tar.gz
Algorithm Hash digest
SHA256 19bdffe01cd30ab07660e1be71850cad607722e890fcc294e7b04d001a8b6929
MD5 75fe0fcf60f8e237f25e725da2e2a70e
BLAKE2b-256 f2929eae277bc666207da79cdce196e96587f0d95841595e57141a1891350692

See more details on using hashes here.

Provenance

The following attestation bundles were made for cihub-1.0.9.tar.gz:

Publisher: publish-pypi.yml on jguida941/ci-cd-hub

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cihub-1.0.9-py3-none-any.whl.

File metadata

  • Download URL: cihub-1.0.9-py3-none-any.whl
  • Upload date:
  • Size: 651.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for cihub-1.0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 c46fa120ff1a1d8e078f56b2cc4ae5c570a55223d320b663f83bf0f834a01a72
MD5 051886bfe5c44fb11b8287726cb69dcc
BLAKE2b-256 0b72ac1d8302693aa51d8e183db17bda98e8542f562d0d082001d96f85db7b17

See more details on using hashes here.

Provenance

The following attestation bundles were made for cihub-1.0.9-py3-none-any.whl:

Publisher: publish-pypi.yml on jguida941/ci-cd-hub

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page