N
Nivora

DevOps Delivery Control Plane

Go 实现的开源交付控制平面。与 Jenkins、Argo CD、Kubernetes 等现有工具集成,提供统一的 delivery state、artifact traceability、policy enforcement 和 audit trail。

Beta-candidate foundation · 非生产就绪

现代交付链路涉及 SCM、CI runner、制品仓库、策略检查、部署引擎、云目标、日志系统和审计记录。各系统独立维护各自的 state 和 identity 语义,导致交付状态碎片化,artifact identity、approval record 和 rollback context 缺乏统一视图。

Nivora 提供控制平面模型:PipelineRun、Release、DeploymentRun、Artifact、Environment、Policy、AuditLog。与底层工具集成,而非替代,将各系统的 delivery state 纳入统一查询和审计范围。

现状

  • 部署状态分散在各子系统
  • 制品依赖 mutable tag,identity 不可追溯
  • 审批和策略门控缺乏统一标准
  • 回滚时上下文丢失

Nivora

  • 统一 delivery timeline 查询接口
  • 制品绑定不可变 digest / 签名
  • 策略和审批作为一等模型实体
  • 每次部署生成完整 audit trail

控制平面 / 执行平面分离

控制平面负责 API、state、orchestration、policy 和 audit。执行平面负责 job execution、log capture、heartbeat 和 runtime result reporting。API Server 不直接执行部署作业。

Runner ≠ Executor

Runner 定义作业执行的上下文和环境(who),Executor 定义具体的执行机制(how)。该分离使编排层无需为每种执行环境重写调度逻辑。

Runner

  • Local Runner
  • Host Runner
  • Kubernetes Runner
  • GitOps Runner
  • Cloud Runner

Executor

  • Shell Executor
  • SSH Executor
  • K8s Job Executor
  • Helm / YAML Executor
  • Argo CD Executor
  • Webhook Executor

Ports & Adapters

外部系统通过 Port 接口接入核心。Use case 依赖 capability interface,不依赖具体厂商 SDK。

端到端交付流

从 trigger 到 timeline 的完整 delivery lifecycle。当前实现覆盖 shell-based PipelineRun 子集。

核心概念

领域模型覆盖交付全生命周期。

Application

Nivora 管理的产品或服务实体

Environment

交付上下文(dev / staging / prod)

Pipeline

可复用的 stage / job / step 定义

PipelineRun

Pipeline 的一次执行实例

Release

版本化交付意图,关联不可变制品

DeploymentRun

发布或部署计划的一次执行

Runner

接收并执行作业的组件

Executor

Runner 使用的具体执行机制

Policy

允许、拒绝或要求审批的门控

AuditLog

关键操作的持久化记录

Event

交付生命周期中的运行时事件

LogChunk

有序的 stdout / stderr 日志段

技术栈

Go 1.22,最小化外部依赖。

核心

  • Go 1.22
  • go-chi/chi (HTTP router)
  • spf13/cobra (CLI)
  • log/slog (structured logging)

存储

  • jackc/pgx (PostgreSQL)
  • goose / golang-migrate (migrations)
  • S3 / MinIO / local (object store)
  • Memory / NATS (event bus)

协议

  • REST + OpenAPI
  • AsyncAPI (events)
  • Protobuf (gRPC)
  • CloudEvents (envelopes)

依赖原则

优先使用标准库
复用现有依赖
新增依赖须说明必要性
不为 trivial helpers 引入包

模块化单体

以模块化单体架构起步,内部边界稳定后支持服务拆分。四个二进制对应四个独立运行时角色。

N

nivora-server

API Server

控制平面入口。REST / gRPC API、state management、policy decision、audit logging。

N

nivora-worker

Worker

消费队列中的 PipelineRun,构建 runtime plan,分发给 Runner。

N

nivora-runner

Runner

接收作业,委托 Executor 执行,上报 logs、heartbeats 和 status。

N

nivora

CLI

本地操作入口。pipeline run、deployment plan、release deploy。

目录结构

cmd/ — binary entrypoints
internal/domain/ — pure domain models
internal/usecase/ — business orchestration
internal/ports/ — external capability interfaces
internal/adapters/ — external system implementations
internal/infra/ — technical infrastructure
internal/api/ — HTTP / gRPC transport

分层规则

Domain 定义含义。Use case 定义编排。Ports 定义契约。Adapters 实现外部集成。Infra 提供技术管道。API 处理传输。

当前能力状态

当前处于 beta-candidate foundation 阶段。以下列表反映代码和文档的实际状态,不夸大已完成功能。

Backend Skeleton
已完成Completed
Architecture Guardrails
已完成Module boundaries, verification scripts
PipelineRun Runtime
已完成Shell executor, logs, status transitions, audit
K8s YAML Planning / Dry-run
进行中Phase 2.1: non-destructive planning, local no-op apply
Artifact Binding / OCI Digest
进行中Phase 2.5: digest resolution foundation
Argo CD GitOps
进行中Phase 2.6: adapter foundation
DevSecOps Policy Gates
规划中Phase 3.0
AuthN / AuthZ / RBAC
规划中Phase 3.2
Approvals / Change Windows / Notifications
规划中Phase 3.3
Visualization API / Web UI
规划中Phase 4.0-4.1: read-model API, minimal frontend
Production Multi-cloud Adapters
规划中Future phase
Full DevSecOps Integration
规划中Future phase

部署

支持 Docker Compose、Helm Chart 和 Kubernetes manifests。当前阶段适用于本地开发和评估。

Docker Compose

Server + worker + runner + PostgreSQL 本地组合。

Helm Chart

Production profile、rolling update、health probes。

Kubernetes

Native YAML manifests。

terminal
$ make build
go build ./cmd/...
✓ nivora-server
✓ nivora-worker
✓ nivora-runner
✓ nivora CLI

$ make run-server
Server ready at :8080

$ go run ./cmd/nivora pipeline run --local
examples/pipelines/simple-shell.yaml

API

REST + OpenAPI。未实现端点返回 not_implemented 结构化响应,不返回 mock 数据。

/api/v1/orgs · /projects · /pipelines · /pipeline-runs · /deployments · /releases
N

统一的交付控制平面

集成现有工具链,提供 delivery state、artifact traceability、policy enforcement 和 audit trail 的统一视图。