This commit is contained in:
valenti
2026-09-08 07:21:34 -04:00
commit a4b224da8e
169 changed files with 27483 additions and 0 deletions
@@ -0,0 +1,42 @@
"""Abstract CI/CD connector interface."""
from __future__ import annotations
from dataclasses import dataclass
from datetime import datetime
from typing import Protocol, Optional, Sequence
@dataclass(frozen=True)
class BuildInfo:
build_id: str
pipeline_name: str
status: str # success | failed | running | cancelled
started_at: Optional[datetime] = None
finished_at: Optional[datetime] = None
triggered_by: Optional[str] = None
branch: Optional[str] = None
commit_sha: Optional[str] = None
url: Optional[str] = None
@dataclass(frozen=True)
class DeploymentInfo:
deployment_id: str
environment: str # dev | staging | prod | ...
status: str # success | failed | in_progress
version_ref: Optional[str] = None
started_at: Optional[datetime] = None
finished_at: Optional[datetime] = None
target: Optional[str] = None
url: Optional[str] = None
class CICDConnector(Protocol):
"""Jenkins / GitLab CI / GitHub Actions / ArgoCD / ..."""
async def get_build(self, pipeline: str, build_id: str) -> Optional[BuildInfo]: ...
async def list_builds(self, pipeline: str, limit: int = 50) -> Sequence[BuildInfo]: ...
async def get_deployment(self, deployment_id: str) -> Optional[DeploymentInfo]: ...
async def list_deployments(self, environment: str, limit: int = 50) -> Sequence[DeploymentInfo]: ...