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.14.tar.gz (482.9 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.14-py3-none-any.whl (652.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: cihub-1.0.14.tar.gz
  • Upload date:
  • Size: 482.9 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.14.tar.gz
Algorithm Hash digest
SHA256 3a72b59211d3dee927e73979e1064d375d7231d18e48346bd834ef8ef01da92e
MD5 94d9a3dd1dd365d59f22f1f75b7572bf
BLAKE2b-256 1975e5782315e1f51eab917eeb288659a6d17eef29539b90f0dc6c04e3694b5d

See more details on using hashes here.

Provenance

The following attestation bundles were made for cihub-1.0.14.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.14-py3-none-any.whl.

File metadata

  • Download URL: cihub-1.0.14-py3-none-any.whl
  • Upload date:
  • Size: 652.8 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.14-py3-none-any.whl
Algorithm Hash digest
SHA256 35f934a8671b887f147384df82dc7aa850fa5c936cb3af743f0290d5dfcfbb27
MD5 3b15a916f5f3ab902b3c86539ff6fe0d
BLAKE2b-256 5faca435340898a4c6fdaad5aee73d89a6e405bd579d70930ee4a073b5e08ad5

See more details on using hashes here.

Provenance

The following attestation bundles were made for cihub-1.0.14-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