【Harness:落地实战】23、从CI/CD到AI原生底座:Harness平台全景深度解析——现代软件交付的最终答案?

从CI/CD到AI原生底座:Harness平台全景深度解析------现代软件交付的最终答案?

关键词:Harness平台、AI原生软件交付、CI/CD平台、Jenkins替代、GitOps、AIDA智能助手、软件交付知识图谱、IDP 2.0

目录

文章目录

  • 从CI/CD到AI原生底座:Harness平台全景深度解析------现代软件交付的最终答案?
    • 目录
    • 一、引言:当AI写代码的速度超越交付速度
    • 二、软件交付平台的代际更迭:从Jenkins到AI原生
      • [2.1 Harness平台定位:不是"更好的Jenkins"](#2.1 Harness平台定位:不是“更好的Jenkins”)
    • [三、竞品横评:Harness vs Jenkins vs GitLab CI vs GitHub Actions](#三、竞品横评:Harness vs Jenkins vs GitLab CI vs GitHub Actions)
      • [3.1 对比矩阵](#3.1 对比矩阵)
      • [3.2 各框架深度对比](#3.2 各框架深度对比)
      • [3.3 选型速查](#3.3 选型速查)
    • 四、核心模块全景图:不止于CI/CD
      • [4.1 CI:持续集成即服务](#4.1 CI:持续集成即服务)
      • [4.2 CD:持续交付](#4.2 CD:持续交付)
      • [4.3 Feature Flags(FME):功能管理](#4.3 Feature Flags(FME):功能管理)
      • [4.4 CCM:云成本管理](#4.4 CCM:云成本管理)
      • [4.5 SRM:服务可靠性管理](#4.5 SRM:服务可靠性管理)
      • [4.6 GitOps:以Git为唯一真实源](#4.6 GitOps:以Git为唯一真实源)
      • [4.7 IDP 2.0:内部开发者门户](#4.7 IDP 2.0:内部开发者门户)
      • [4.8 STO:安全测试编排](#4.8 STO:安全测试编排)
    • 五、AI原生架构解析:AIDA与知识图谱
      • [5.1 AIDA:贯穿SDLC的AI助手](#5.1 AIDA:贯穿SDLC的AI助手)
      • [5.2 Software Delivery Knowledge Graph](#5.2 Software Delivery Knowledge Graph)
    • [六、部署形态与选型:SaaS vs Self-Managed vs Community](#六、部署形态与选型:SaaS vs Self-Managed vs Community)
      • [6.1 三种部署形态对比](#6.1 三种部署形态对比)
      • [6.2 SaaS(云托管)](#6.2 SaaS(云托管))
      • [6.3 Self-Managed Enterprise Edition(自托管企业版)](#6.3 Self-Managed Enterprise Edition(自托管企业版))
      • [6.4 Community Edition / Open Source(社区版)](#6.4 Community Edition / Open Source(社区版))
    • 七、实战:5分钟创建第一条流水线
      • [7.1 前置准备](#7.1 前置准备)
      • [7.2 核心概念速览](#7.2 核心概念速览)
      • [7.3 分步创建流程](#7.3 分步创建流程)
      • [7.4 示例流水线YAML(简化版)](#7.4 示例流水线YAML(简化版))
      • [7.5 效果验证](#7.5 效果验证)
    • 八、总结与展望

一、引言:当AI写代码的速度超越交付速度

2026年一个普通的周二上午,某互联网公司的技术总监盯着屏幕上的一排红色报警,陷入了沉思。

过去一个季度,团队全面引入了AI编码助手,工程师们欢呼雀跃------代码生成速度提升了5倍,甚至10倍!然而,一个尴尬的现实摆在面前:代码在仓库里堆积如山,但能够安全上线生产的寥寥无几。"我们的CI/CD管道还是三年前的老样子,"他苦笑道,"AI一天生成的代码,够我们传统交付流程消化一个月。这就像给马车装了飞机引擎------不仅跑不快,还可能翻车。"

这不是孤例。根据Harness 2026年度《DevOps现代化状态报告》,在对700个工程团队的调研中,73%的企业表示:AI编码工具的采纳速度,远超其交付管道的成熟度 。这就是业界热议的"AI速度悖论"------AI生成代码的速度飙升,但交付管道的速度停滞不前,代码堆积却难以安全上线。

更糟糕的是,当AI生成的代码量呈指数级增长,人工review的能力却是线性增长。代码质量、安全漏洞、合规性检查------所有这些"人工门禁"都成为瓶颈。那么,谁来打破这一僵局?

答案指向一个看似简单却蕴含深意的词------Harness

在2026年的AI和软件工程领域,"Harness"实际上有双重含义:

  1. Harness Engineering(驾驭工程) :继Prompt Engineering和Context Engineering之后的第三级AI工程范式,核心理念是"人类掌舵,AI执行"。
  2. Harness平台(harness.io :一个AI原生的软件交付平台,估值55亿美元,服务1000+企业客户。

这两个"Harness"共同揭示了2026年软件工程的核心矛盾:AI已经能够高速生成代码,但企业需要可靠的系统来驾驭这种速度

本文将从平台视角出发,深度解析Harness平台的演进历程、架构全景、核心模块、AI原生设计,以及如何在实际工作中落地。无论你是CTO、技术决策者,还是一线架构师,这篇文章都将为你揭示:在AI时代,软件交付平台应该长什么样?
图1:AI速度悖论示意图
#mermaid-svg-ySoZ7JM7b70SxuSr{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-ySoZ7JM7b70SxuSr .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-ySoZ7JM7b70SxuSr .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-ySoZ7JM7b70SxuSr .error-icon{fill:#552222;}#mermaid-svg-ySoZ7JM7b70SxuSr .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-ySoZ7JM7b70SxuSr .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-ySoZ7JM7b70SxuSr .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-ySoZ7JM7b70SxuSr .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-ySoZ7JM7b70SxuSr .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-ySoZ7JM7b70SxuSr .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-ySoZ7JM7b70SxuSr .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-ySoZ7JM7b70SxuSr .marker{fill:#333333;stroke:#333333;}#mermaid-svg-ySoZ7JM7b70SxuSr .marker.cross{stroke:#333333;}#mermaid-svg-ySoZ7JM7b70SxuSr svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-ySoZ7JM7b70SxuSr p{margin:0;}#mermaid-svg-ySoZ7JM7b70SxuSr .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-ySoZ7JM7b70SxuSr .cluster-label text{fill:#333;}#mermaid-svg-ySoZ7JM7b70SxuSr .cluster-label span{color:#333;}#mermaid-svg-ySoZ7JM7b70SxuSr .cluster-label span p{background-color:transparent;}#mermaid-svg-ySoZ7JM7b70SxuSr .label text,#mermaid-svg-ySoZ7JM7b70SxuSr span{fill:#333;color:#333;}#mermaid-svg-ySoZ7JM7b70SxuSr .node rect,#mermaid-svg-ySoZ7JM7b70SxuSr .node circle,#mermaid-svg-ySoZ7JM7b70SxuSr .node ellipse,#mermaid-svg-ySoZ7JM7b70SxuSr .node polygon,#mermaid-svg-ySoZ7JM7b70SxuSr .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-ySoZ7JM7b70SxuSr .rough-node .label text,#mermaid-svg-ySoZ7JM7b70SxuSr .node .label text,#mermaid-svg-ySoZ7JM7b70SxuSr .image-shape .label,#mermaid-svg-ySoZ7JM7b70SxuSr .icon-shape .label{text-anchor:middle;}#mermaid-svg-ySoZ7JM7b70SxuSr .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-ySoZ7JM7b70SxuSr .rough-node .label,#mermaid-svg-ySoZ7JM7b70SxuSr .node .label,#mermaid-svg-ySoZ7JM7b70SxuSr .image-shape .label,#mermaid-svg-ySoZ7JM7b70SxuSr .icon-shape .label{text-align:center;}#mermaid-svg-ySoZ7JM7b70SxuSr .node.clickable{cursor:pointer;}#mermaid-svg-ySoZ7JM7b70SxuSr .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-ySoZ7JM7b70SxuSr .arrowheadPath{fill:#333333;}#mermaid-svg-ySoZ7JM7b70SxuSr .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-ySoZ7JM7b70SxuSr .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-ySoZ7JM7b70SxuSr .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-ySoZ7JM7b70SxuSr .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-ySoZ7JM7b70SxuSr .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-ySoZ7JM7b70SxuSr .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-ySoZ7JM7b70SxuSr .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-ySoZ7JM7b70SxuSr .cluster text{fill:#333;}#mermaid-svg-ySoZ7JM7b70SxuSr .cluster span{color:#333;}#mermaid-svg-ySoZ7JM7b70SxuSr div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-ySoZ7JM7b70SxuSr .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-ySoZ7JM7b70SxuSr rect.text{fill:none;stroke-width:0;}#mermaid-svg-ySoZ7JM7b70SxuSr .icon-shape,#mermaid-svg-ySoZ7JM7b70SxuSr .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-ySoZ7JM7b70SxuSr .icon-shape p,#mermaid-svg-ySoZ7JM7b70SxuSr .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-ySoZ7JM7b70SxuSr .icon-shape .label rect,#mermaid-svg-ySoZ7JM7b70SxuSr .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-ySoZ7JM7b70SxuSr .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-ySoZ7JM7b70SxuSr .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-ySoZ7JM7b70SxuSr :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 下游瓶颈
上游
AI编码助手
代码生成速度 ↑↑↑
CI/CD管道
人工Review
安全审查
合规检查
代码堆积
上线滞后

二、软件交付平台的代际更迭:从Jenkins到AI原生

做过DevOps的人都知道,工具选型是一场没有终点的迁徙。

第一代(2010年前后) :Jenkins统治了CI/CD领域。那时候的交付流水线是"脚本拼贴"------Groovy脚本套Shell命令,出问题就SSH到服务器上看日志。Jenkins高度灵活,插件生态庞大,但维护成本极高。据统计,企业通常需要2-5名工程师专门维护Jenkins日常运行。

第二代(2017年前后) :GitLab CI和GitHub Actions带着声明式YAML杀入场,"配置即代码"成了新共识。GitHub Actions凭借GitHub原生集成的便利性,成为无数开源项目和中小企业CI/CD的首选。GitLab CI则以一体化的DevOps平台定位,覆盖了从代码托管到部署的全流程。

第三代(2024年至今) :AI不再只是"辅助写个流水线YAML"的外挂插件,它开始嵌入软件交付的每一个环节------从测试选择、构建优化到部署验证、故障回滚。Harness是这个趋势里最激进的玩家:它把AI写在平台的DNA里,而不是挂在平台上做附件
图2:软件交付平台代际演进时间轴
#mermaid-svg-QX8Ujclg21xa4ETG{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-QX8Ujclg21xa4ETG .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-QX8Ujclg21xa4ETG .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-QX8Ujclg21xa4ETG .error-icon{fill:#552222;}#mermaid-svg-QX8Ujclg21xa4ETG .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-QX8Ujclg21xa4ETG .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-QX8Ujclg21xa4ETG .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-QX8Ujclg21xa4ETG .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-QX8Ujclg21xa4ETG .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-QX8Ujclg21xa4ETG .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-QX8Ujclg21xa4ETG .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-QX8Ujclg21xa4ETG .marker{fill:#333333;stroke:#333333;}#mermaid-svg-QX8Ujclg21xa4ETG .marker.cross{stroke:#333333;}#mermaid-svg-QX8Ujclg21xa4ETG svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-QX8Ujclg21xa4ETG p{margin:0;}#mermaid-svg-QX8Ujclg21xa4ETG .edge{stroke-width:3;}#mermaid-svg-QX8Ujclg21xa4ETG .section--1 rect,#mermaid-svg-QX8Ujclg21xa4ETG .section--1 path,#mermaid-svg-QX8Ujclg21xa4ETG .section--1 circle,#mermaid-svg-QX8Ujclg21xa4ETG .section--1 path{fill:hsl(240, 100%, 76.2745098039%);}#mermaid-svg-QX8Ujclg21xa4ETG .section--1 text{fill:#ffffff;}#mermaid-svg-QX8Ujclg21xa4ETG .node-icon--1{font-size:40px;color:#ffffff;}#mermaid-svg-QX8Ujclg21xa4ETG .section-edge--1{stroke:hsl(240, 100%, 76.2745098039%);}#mermaid-svg-QX8Ujclg21xa4ETG .edge-depth--1{stroke-width:17;}#mermaid-svg-QX8Ujclg21xa4ETG .section--1 line{stroke:hsl(60, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-QX8Ujclg21xa4ETG .lineWrapper line{stroke:#ffffff;}#mermaid-svg-QX8Ujclg21xa4ETG .disabled,#mermaid-svg-QX8Ujclg21xa4ETG .disabled circle,#mermaid-svg-QX8Ujclg21xa4ETG .disabled text{fill:lightgray;}#mermaid-svg-QX8Ujclg21xa4ETG .disabled text{fill:#efefef;}#mermaid-svg-QX8Ujclg21xa4ETG .section-0 rect,#mermaid-svg-QX8Ujclg21xa4ETG .section-0 path,#mermaid-svg-QX8Ujclg21xa4ETG .section-0 circle,#mermaid-svg-QX8Ujclg21xa4ETG .section-0 path{fill:hsl(60, 100%, 73.5294117647%);}#mermaid-svg-QX8Ujclg21xa4ETG .section-0 text{fill:black;}#mermaid-svg-QX8Ujclg21xa4ETG .node-icon-0{font-size:40px;color:black;}#mermaid-svg-QX8Ujclg21xa4ETG .section-edge-0{stroke:hsl(60, 100%, 73.5294117647%);}#mermaid-svg-QX8Ujclg21xa4ETG .edge-depth-0{stroke-width:14;}#mermaid-svg-QX8Ujclg21xa4ETG .section-0 line{stroke:hsl(240, 100%, 83.5294117647%);stroke-width:3;}#mermaid-svg-QX8Ujclg21xa4ETG .lineWrapper line{stroke:black;}#mermaid-svg-QX8Ujclg21xa4ETG .disabled,#mermaid-svg-QX8Ujclg21xa4ETG .disabled circle,#mermaid-svg-QX8Ujclg21xa4ETG .disabled text{fill:lightgray;}#mermaid-svg-QX8Ujclg21xa4ETG .disabled text{fill:#efefef;}#mermaid-svg-QX8Ujclg21xa4ETG .section-1 rect,#mermaid-svg-QX8Ujclg21xa4ETG .section-1 path,#mermaid-svg-QX8Ujclg21xa4ETG .section-1 circle,#mermaid-svg-QX8Ujclg21xa4ETG .section-1 path{fill:hsl(80, 100%, 76.2745098039%);}#mermaid-svg-QX8Ujclg21xa4ETG .section-1 text{fill:black;}#mermaid-svg-QX8Ujclg21xa4ETG .node-icon-1{font-size:40px;color:black;}#mermaid-svg-QX8Ujclg21xa4ETG .section-edge-1{stroke:hsl(80, 100%, 76.2745098039%);}#mermaid-svg-QX8Ujclg21xa4ETG .edge-depth-1{stroke-width:11;}#mermaid-svg-QX8Ujclg21xa4ETG .section-1 line{stroke:hsl(260, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-QX8Ujclg21xa4ETG .lineWrapper line{stroke:black;}#mermaid-svg-QX8Ujclg21xa4ETG .disabled,#mermaid-svg-QX8Ujclg21xa4ETG .disabled circle,#mermaid-svg-QX8Ujclg21xa4ETG .disabled text{fill:lightgray;}#mermaid-svg-QX8Ujclg21xa4ETG .disabled text{fill:#efefef;}#mermaid-svg-QX8Ujclg21xa4ETG .section-2 rect,#mermaid-svg-QX8Ujclg21xa4ETG .section-2 path,#mermaid-svg-QX8Ujclg21xa4ETG .section-2 circle,#mermaid-svg-QX8Ujclg21xa4ETG .section-2 path{fill:hsl(270, 100%, 76.2745098039%);}#mermaid-svg-QX8Ujclg21xa4ETG .section-2 text{fill:#ffffff;}#mermaid-svg-QX8Ujclg21xa4ETG .node-icon-2{font-size:40px;color:#ffffff;}#mermaid-svg-QX8Ujclg21xa4ETG .section-edge-2{stroke:hsl(270, 100%, 76.2745098039%);}#mermaid-svg-QX8Ujclg21xa4ETG .edge-depth-2{stroke-width:8;}#mermaid-svg-QX8Ujclg21xa4ETG .section-2 line{stroke:hsl(90, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-QX8Ujclg21xa4ETG .lineWrapper line{stroke:#ffffff;}#mermaid-svg-QX8Ujclg21xa4ETG .disabled,#mermaid-svg-QX8Ujclg21xa4ETG .disabled circle,#mermaid-svg-QX8Ujclg21xa4ETG .disabled text{fill:lightgray;}#mermaid-svg-QX8Ujclg21xa4ETG .disabled text{fill:#efefef;}#mermaid-svg-QX8Ujclg21xa4ETG .section-3 rect,#mermaid-svg-QX8Ujclg21xa4ETG .section-3 path,#mermaid-svg-QX8Ujclg21xa4ETG .section-3 circle,#mermaid-svg-QX8Ujclg21xa4ETG .section-3 path{fill:hsl(300, 100%, 76.2745098039%);}#mermaid-svg-QX8Ujclg21xa4ETG .section-3 text{fill:black;}#mermaid-svg-QX8Ujclg21xa4ETG .node-icon-3{font-size:40px;color:black;}#mermaid-svg-QX8Ujclg21xa4ETG .section-edge-3{stroke:hsl(300, 100%, 76.2745098039%);}#mermaid-svg-QX8Ujclg21xa4ETG .edge-depth-3{stroke-width:5;}#mermaid-svg-QX8Ujclg21xa4ETG .section-3 line{stroke:hsl(120, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-QX8Ujclg21xa4ETG .lineWrapper line{stroke:black;}#mermaid-svg-QX8Ujclg21xa4ETG .disabled,#mermaid-svg-QX8Ujclg21xa4ETG .disabled circle,#mermaid-svg-QX8Ujclg21xa4ETG .disabled text{fill:lightgray;}#mermaid-svg-QX8Ujclg21xa4ETG .disabled text{fill:#efefef;}#mermaid-svg-QX8Ujclg21xa4ETG .section-4 rect,#mermaid-svg-QX8Ujclg21xa4ETG .section-4 path,#mermaid-svg-QX8Ujclg21xa4ETG .section-4 circle,#mermaid-svg-QX8Ujclg21xa4ETG .section-4 path{fill:hsl(330, 100%, 76.2745098039%);}#mermaid-svg-QX8Ujclg21xa4ETG .section-4 text{fill:black;}#mermaid-svg-QX8Ujclg21xa4ETG .node-icon-4{font-size:40px;color:black;}#mermaid-svg-QX8Ujclg21xa4ETG .section-edge-4{stroke:hsl(330, 100%, 76.2745098039%);}#mermaid-svg-QX8Ujclg21xa4ETG .edge-depth-4{stroke-width:2;}#mermaid-svg-QX8Ujclg21xa4ETG .section-4 line{stroke:hsl(150, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-QX8Ujclg21xa4ETG .lineWrapper line{stroke:black;}#mermaid-svg-QX8Ujclg21xa4ETG .disabled,#mermaid-svg-QX8Ujclg21xa4ETG .disabled circle,#mermaid-svg-QX8Ujclg21xa4ETG .disabled text{fill:lightgray;}#mermaid-svg-QX8Ujclg21xa4ETG .disabled text{fill:#efefef;}#mermaid-svg-QX8Ujclg21xa4ETG .section-5 rect,#mermaid-svg-QX8Ujclg21xa4ETG .section-5 path,#mermaid-svg-QX8Ujclg21xa4ETG .section-5 circle,#mermaid-svg-QX8Ujclg21xa4ETG .section-5 path{fill:hsl(0, 100%, 76.2745098039%);}#mermaid-svg-QX8Ujclg21xa4ETG .section-5 text{fill:black;}#mermaid-svg-QX8Ujclg21xa4ETG .node-icon-5{font-size:40px;color:black;}#mermaid-svg-QX8Ujclg21xa4ETG .section-edge-5{stroke:hsl(0, 100%, 76.2745098039%);}#mermaid-svg-QX8Ujclg21xa4ETG .edge-depth-5{stroke-width:-1;}#mermaid-svg-QX8Ujclg21xa4ETG .section-5 line{stroke:hsl(180, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-QX8Ujclg21xa4ETG .lineWrapper line{stroke:black;}#mermaid-svg-QX8Ujclg21xa4ETG .disabled,#mermaid-svg-QX8Ujclg21xa4ETG .disabled circle,#mermaid-svg-QX8Ujclg21xa4ETG .disabled text{fill:lightgray;}#mermaid-svg-QX8Ujclg21xa4ETG .disabled text{fill:#efefef;}#mermaid-svg-QX8Ujclg21xa4ETG .section-6 rect,#mermaid-svg-QX8Ujclg21xa4ETG .section-6 path,#mermaid-svg-QX8Ujclg21xa4ETG .section-6 circle,#mermaid-svg-QX8Ujclg21xa4ETG .section-6 path{fill:hsl(30, 100%, 76.2745098039%);}#mermaid-svg-QX8Ujclg21xa4ETG .section-6 text{fill:black;}#mermaid-svg-QX8Ujclg21xa4ETG .node-icon-6{font-size:40px;color:black;}#mermaid-svg-QX8Ujclg21xa4ETG .section-edge-6{stroke:hsl(30, 100%, 76.2745098039%);}#mermaid-svg-QX8Ujclg21xa4ETG .edge-depth-6{stroke-width:-4;}#mermaid-svg-QX8Ujclg21xa4ETG .section-6 line{stroke:hsl(210, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-QX8Ujclg21xa4ETG .lineWrapper line{stroke:black;}#mermaid-svg-QX8Ujclg21xa4ETG .disabled,#mermaid-svg-QX8Ujclg21xa4ETG .disabled circle,#mermaid-svg-QX8Ujclg21xa4ETG .disabled text{fill:lightgray;}#mermaid-svg-QX8Ujclg21xa4ETG .disabled text{fill:#efefef;}#mermaid-svg-QX8Ujclg21xa4ETG .section-7 rect,#mermaid-svg-QX8Ujclg21xa4ETG .section-7 path,#mermaid-svg-QX8Ujclg21xa4ETG .section-7 circle,#mermaid-svg-QX8Ujclg21xa4ETG .section-7 path{fill:hsl(90, 100%, 76.2745098039%);}#mermaid-svg-QX8Ujclg21xa4ETG .section-7 text{fill:black;}#mermaid-svg-QX8Ujclg21xa4ETG .node-icon-7{font-size:40px;color:black;}#mermaid-svg-QX8Ujclg21xa4ETG .section-edge-7{stroke:hsl(90, 100%, 76.2745098039%);}#mermaid-svg-QX8Ujclg21xa4ETG .edge-depth-7{stroke-width:-7;}#mermaid-svg-QX8Ujclg21xa4ETG .section-7 line{stroke:hsl(270, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-QX8Ujclg21xa4ETG .lineWrapper line{stroke:black;}#mermaid-svg-QX8Ujclg21xa4ETG .disabled,#mermaid-svg-QX8Ujclg21xa4ETG .disabled circle,#mermaid-svg-QX8Ujclg21xa4ETG .disabled text{fill:lightgray;}#mermaid-svg-QX8Ujclg21xa4ETG .disabled text{fill:#efefef;}#mermaid-svg-QX8Ujclg21xa4ETG .section-8 rect,#mermaid-svg-QX8Ujclg21xa4ETG .section-8 path,#mermaid-svg-QX8Ujclg21xa4ETG .section-8 circle,#mermaid-svg-QX8Ujclg21xa4ETG .section-8 path{fill:hsl(150, 100%, 76.2745098039%);}#mermaid-svg-QX8Ujclg21xa4ETG .section-8 text{fill:black;}#mermaid-svg-QX8Ujclg21xa4ETG .node-icon-8{font-size:40px;color:black;}#mermaid-svg-QX8Ujclg21xa4ETG .section-edge-8{stroke:hsl(150, 100%, 76.2745098039%);}#mermaid-svg-QX8Ujclg21xa4ETG .edge-depth-8{stroke-width:-10;}#mermaid-svg-QX8Ujclg21xa4ETG .section-8 line{stroke:hsl(330, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-QX8Ujclg21xa4ETG .lineWrapper line{stroke:black;}#mermaid-svg-QX8Ujclg21xa4ETG .disabled,#mermaid-svg-QX8Ujclg21xa4ETG .disabled circle,#mermaid-svg-QX8Ujclg21xa4ETG .disabled text{fill:lightgray;}#mermaid-svg-QX8Ujclg21xa4ETG .disabled text{fill:#efefef;}#mermaid-svg-QX8Ujclg21xa4ETG .section-9 rect,#mermaid-svg-QX8Ujclg21xa4ETG .section-9 path,#mermaid-svg-QX8Ujclg21xa4ETG .section-9 circle,#mermaid-svg-QX8Ujclg21xa4ETG .section-9 path{fill:hsl(180, 100%, 76.2745098039%);}#mermaid-svg-QX8Ujclg21xa4ETG .section-9 text{fill:black;}#mermaid-svg-QX8Ujclg21xa4ETG .node-icon-9{font-size:40px;color:black;}#mermaid-svg-QX8Ujclg21xa4ETG .section-edge-9{stroke:hsl(180, 100%, 76.2745098039%);}#mermaid-svg-QX8Ujclg21xa4ETG .edge-depth-9{stroke-width:-13;}#mermaid-svg-QX8Ujclg21xa4ETG .section-9 line{stroke:hsl(0, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-QX8Ujclg21xa4ETG .lineWrapper line{stroke:black;}#mermaid-svg-QX8Ujclg21xa4ETG .disabled,#mermaid-svg-QX8Ujclg21xa4ETG .disabled circle,#mermaid-svg-QX8Ujclg21xa4ETG .disabled text{fill:lightgray;}#mermaid-svg-QX8Ujclg21xa4ETG .disabled text{fill:#efefef;}#mermaid-svg-QX8Ujclg21xa4ETG .section-10 rect,#mermaid-svg-QX8Ujclg21xa4ETG .section-10 path,#mermaid-svg-QX8Ujclg21xa4ETG .section-10 circle,#mermaid-svg-QX8Ujclg21xa4ETG .section-10 path{fill:hsl(210, 100%, 76.2745098039%);}#mermaid-svg-QX8Ujclg21xa4ETG .section-10 text{fill:black;}#mermaid-svg-QX8Ujclg21xa4ETG .node-icon-10{font-size:40px;color:black;}#mermaid-svg-QX8Ujclg21xa4ETG .section-edge-10{stroke:hsl(210, 100%, 76.2745098039%);}#mermaid-svg-QX8Ujclg21xa4ETG .edge-depth-10{stroke-width:-16;}#mermaid-svg-QX8Ujclg21xa4ETG .section-10 line{stroke:hsl(30, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-QX8Ujclg21xa4ETG .lineWrapper line{stroke:black;}#mermaid-svg-QX8Ujclg21xa4ETG .disabled,#mermaid-svg-QX8Ujclg21xa4ETG .disabled circle,#mermaid-svg-QX8Ujclg21xa4ETG .disabled text{fill:lightgray;}#mermaid-svg-QX8Ujclg21xa4ETG .disabled text{fill:#efefef;}#mermaid-svg-QX8Ujclg21xa4ETG .section-root rect,#mermaid-svg-QX8Ujclg21xa4ETG .section-root path,#mermaid-svg-QX8Ujclg21xa4ETG .section-root circle{fill:hsl(240, 100%, 46.2745098039%);}#mermaid-svg-QX8Ujclg21xa4ETG .section-root text{fill:#ffffff;}#mermaid-svg-QX8Ujclg21xa4ETG .icon-container{height:100%;display:flex;justify-content:center;align-items:center;}#mermaid-svg-QX8Ujclg21xa4ETG .edge{fill:none;}#mermaid-svg-QX8Ujclg21xa4ETG .eventWrapper{filter:brightness(120%);}#mermaid-svg-QX8Ujclg21xa4ETG :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 2010s 第一代<br/>Jenkins 脚本拼贴 插件生态 高维护成本 2017-2020 第二代<br/>GitLab CI / GitHub Actions 声明式YAML SCM原生集成 配置即代码 2024-今 第三代<br/>Harness AI原生设计 平台化架构 全生命周期覆盖 软件交付平台三代演进

2.1 Harness平台定位:不是"更好的Jenkins"

很多人第一次听到Harness,会本能地问:"这跟Jenkins/GitLab CI/ArgoCD有什么区别?"

这种问法本身就有问题。Harness不是一个"更好的Jenkins",它是一个覆盖软件交付全生命周期的平台矩阵。如果说Jenkins是一个"自动化服务器",GitLab CI是"SCM附带的CI/CD",那么Harness的定位是:

AI Software Delivery Platform™ ------ AI软件交付平台

这意味着Harness不只帮你"跑流水线",它还要帮你:

  • 智能地运行测试(Test Intelligence只跑受影响的测试)
  • 自动地优化部署(AI驱动的金丝雀分析)
  • 主动地管理成本(自动停止闲置云资源)
  • 实在地保障安全(安全测试编排+AI漏洞修复建议)

截至2025年12月,Harness完成了由高盛领投的2.4亿美元E轮融资,估值达到55亿美元,年经常性收入(ARR)已突破2.5亿美元,同比增长超过50%。在过去12个月中,Harness平台支撑了1.28亿次部署、8100万次构建、保护了1.2万亿次API调用,并为客户优化了19亿美元的云支出。

三、竞品横评:Harness vs Jenkins vs GitLab CI vs GitHub Actions

选型离不开对比。我们需要客观地看到Harness与主流竞品的差异。以下从多个维度进行对比分析。

3.1 对比矩阵

维度 Harness Jenkins GitLab CI GitHub Actions
定位 AI原生软件交付平台 通用自动化服务器 一体化DevOps平台 GitHub原生CI/CD
部署模式 SaaS / Self-Managed / Community 仅自托管 Cloud / Self-Managed Cloud / Self-Hosted Runner
学习曲线 中(可视化+AI辅助) 高(需学习Groovy+插件) 低(声明式YAML) 极低(GitHub用户零门槛)
维护开销 极低(SaaS模式免运维) 极高(2-5人专职维护) 中(自托管需维护) 低(云端托管)
云原生能力 原生容器化架构 传统Java架构,需插件适配 良好 良好
AI能力 内置AIDA,贯穿全流程 无原生AI能力 有限(AI辅助建议) Copilot集成较深
可扩展性 模块化架构 插件生态庞大但版本碎片化 有限 Action生态丰富
企业级特性 RBAC、OPA、审计日志原生内置 需插件组合 付费版支持 企业版支持
定价模式 按模块/开发者数收费 免费(但运维成本高) 按用户数/席位收费 按分钟/作业收费

3.2 各框架深度对比

Harness CI vs Jenkins

根据Harness官方的对比指南,两者的核心差异在于:

  • 易用性:Harness提供直观的可视化界面和YAML混合编辑模式,配置和管理CI/CD管道比Jenkins更简单。Jenkins的学习曲线更陡峭。
  • 维护成本:Harness设计为低维护,Jenkins长期维护需要大量人力投入。
  • 云原生设计:Harness从诞生起就面向云原生,Jenkins最初并非为云环境设计。
  • 安全特性:Harness内置原生密钥管理和审计日志,Jenkins需额外插件实现。
  • AI集成:Harness CI Intelligence支持智能测试执行(Test Intelligence),只运行受代码变更影响的测试,大幅加速构建。

Harness vs GitLab CI / GitHub Actions

Shipyard在2026年初发布的CI/CD工具对比报告中指出,GitLab CI与GitHub Actions的优势在于与SCM的原生集成------使用同一个界面管理源代码和CI/CD,减少了上下文切换。

然而,Harness的优势在于:

  • 更广的覆盖范围:GitHub Actions主要聚焦CI,Harness提供从CI到CD、Feature Flags、CCM、SRM的全链路能力。
  • 更好的治理能力:Harness内置OPA策略引擎、细粒度RBAC、审计日志,适合企业级合规场景。
  • 跨环境统一管理:Harness支持在单个平台管理多云/多环境的部署,GitHub Actions在跨环境治理方面较弱。

3.3 选型速查

适用场景 推荐方案
中小团队、GitHub重度用户、开源项目 GitHub Actions(零门槛、免费额度充足)
成熟度高的组织、需要统一DevOps平台 GitLab CI(一体化)
复杂的自定义自动化、自由度高但愿意投入运维 Jenkins(开源免费,但需专业团队维护)
企业级大规模交付、需要AI赋能、多环境治理 Harness
专注K8s GitOps ArgoCD + 任意CI

图3:CI/CD工具选型决策树
#mermaid-svg-37El3OWP4HOTa5VT{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-37El3OWP4HOTa5VT .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-37El3OWP4HOTa5VT .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-37El3OWP4HOTa5VT .error-icon{fill:#552222;}#mermaid-svg-37El3OWP4HOTa5VT .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-37El3OWP4HOTa5VT .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-37El3OWP4HOTa5VT .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-37El3OWP4HOTa5VT .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-37El3OWP4HOTa5VT .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-37El3OWP4HOTa5VT .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-37El3OWP4HOTa5VT .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-37El3OWP4HOTa5VT .marker{fill:#333333;stroke:#333333;}#mermaid-svg-37El3OWP4HOTa5VT .marker.cross{stroke:#333333;}#mermaid-svg-37El3OWP4HOTa5VT svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-37El3OWP4HOTa5VT p{margin:0;}#mermaid-svg-37El3OWP4HOTa5VT .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-37El3OWP4HOTa5VT .cluster-label text{fill:#333;}#mermaid-svg-37El3OWP4HOTa5VT .cluster-label span{color:#333;}#mermaid-svg-37El3OWP4HOTa5VT .cluster-label span p{background-color:transparent;}#mermaid-svg-37El3OWP4HOTa5VT .label text,#mermaid-svg-37El3OWP4HOTa5VT span{fill:#333;color:#333;}#mermaid-svg-37El3OWP4HOTa5VT .node rect,#mermaid-svg-37El3OWP4HOTa5VT .node circle,#mermaid-svg-37El3OWP4HOTa5VT .node ellipse,#mermaid-svg-37El3OWP4HOTa5VT .node polygon,#mermaid-svg-37El3OWP4HOTa5VT .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-37El3OWP4HOTa5VT .rough-node .label text,#mermaid-svg-37El3OWP4HOTa5VT .node .label text,#mermaid-svg-37El3OWP4HOTa5VT .image-shape .label,#mermaid-svg-37El3OWP4HOTa5VT .icon-shape .label{text-anchor:middle;}#mermaid-svg-37El3OWP4HOTa5VT .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-37El3OWP4HOTa5VT .rough-node .label,#mermaid-svg-37El3OWP4HOTa5VT .node .label,#mermaid-svg-37El3OWP4HOTa5VT .image-shape .label,#mermaid-svg-37El3OWP4HOTa5VT .icon-shape .label{text-align:center;}#mermaid-svg-37El3OWP4HOTa5VT .node.clickable{cursor:pointer;}#mermaid-svg-37El3OWP4HOTa5VT .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-37El3OWP4HOTa5VT .arrowheadPath{fill:#333333;}#mermaid-svg-37El3OWP4HOTa5VT .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-37El3OWP4HOTa5VT .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-37El3OWP4HOTa5VT .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-37El3OWP4HOTa5VT .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-37El3OWP4HOTa5VT .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-37El3OWP4HOTa5VT .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-37El3OWP4HOTa5VT .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-37El3OWP4HOTa5VT .cluster text{fill:#333;}#mermaid-svg-37El3OWP4HOTa5VT .cluster span{color:#333;}#mermaid-svg-37El3OWP4HOTa5VT div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-37El3OWP4HOTa5VT .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-37El3OWP4HOTa5VT rect.text{fill:none;stroke-width:0;}#mermaid-svg-37El3OWP4HOTa5VT .icon-shape,#mermaid-svg-37El3OWP4HOTa5VT .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-37El3OWP4HOTa5VT .icon-shape p,#mermaid-svg-37El3OWP4HOTa5VT .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-37El3OWP4HOTa5VT .icon-shape .label rect,#mermaid-svg-37El3OWP4HOTa5VT .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-37El3OWP4HOTa5VT .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-37El3OWP4HOTa5VT .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-37El3OWP4HOTa5VT :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 是,使用GitHub
是,使用GitLab

小团队/开源免费
中大型企业/有预算

否,专注K8s
选择CI/CD工具
是否需要与现有SCM深度集成?
GitHub Actions
GitLab CI
团队规模/预算?
Jenkins + 自运维
是否需要AI能力和全平台?
Harness
ArgoCD + 任选CI

四、核心模块全景图:不止于CI/CD

Harness平台由多个核心模块构成,每个模块解决软件交付生命周期中的一个核心问题。这些模块既可以独立使用,也可以无缝组合,形成一体化的软件交付平台。
图4:Harness核心模块全景架构
#mermaid-svg-ScJ4GA1S67DKlqgR{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-ScJ4GA1S67DKlqgR .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-ScJ4GA1S67DKlqgR .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-ScJ4GA1S67DKlqgR .error-icon{fill:#552222;}#mermaid-svg-ScJ4GA1S67DKlqgR .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-ScJ4GA1S67DKlqgR .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-ScJ4GA1S67DKlqgR .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-ScJ4GA1S67DKlqgR .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-ScJ4GA1S67DKlqgR .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-ScJ4GA1S67DKlqgR .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-ScJ4GA1S67DKlqgR .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-ScJ4GA1S67DKlqgR .marker{fill:#333333;stroke:#333333;}#mermaid-svg-ScJ4GA1S67DKlqgR .marker.cross{stroke:#333333;}#mermaid-svg-ScJ4GA1S67DKlqgR svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-ScJ4GA1S67DKlqgR p{margin:0;}#mermaid-svg-ScJ4GA1S67DKlqgR .edge{stroke-width:3;}#mermaid-svg-ScJ4GA1S67DKlqgR .section--1 rect,#mermaid-svg-ScJ4GA1S67DKlqgR .section--1 path,#mermaid-svg-ScJ4GA1S67DKlqgR .section--1 circle,#mermaid-svg-ScJ4GA1S67DKlqgR .section--1 polygon,#mermaid-svg-ScJ4GA1S67DKlqgR .section--1 path{fill:hsl(240, 100%, 76.2745098039%);}#mermaid-svg-ScJ4GA1S67DKlqgR .section--1 text{fill:#ffffff;}#mermaid-svg-ScJ4GA1S67DKlqgR .node-icon--1{font-size:40px;color:#ffffff;}#mermaid-svg-ScJ4GA1S67DKlqgR .section-edge--1{stroke:hsl(240, 100%, 76.2745098039%);}#mermaid-svg-ScJ4GA1S67DKlqgR .edge-depth--1{stroke-width:17;}#mermaid-svg-ScJ4GA1S67DKlqgR .section--1 line{stroke:hsl(60, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-ScJ4GA1S67DKlqgR .disabled,#mermaid-svg-ScJ4GA1S67DKlqgR .disabled circle,#mermaid-svg-ScJ4GA1S67DKlqgR .disabled text{fill:lightgray;}#mermaid-svg-ScJ4GA1S67DKlqgR .disabled text{fill:#efefef;}#mermaid-svg-ScJ4GA1S67DKlqgR .section-0 rect,#mermaid-svg-ScJ4GA1S67DKlqgR .section-0 path,#mermaid-svg-ScJ4GA1S67DKlqgR .section-0 circle,#mermaid-svg-ScJ4GA1S67DKlqgR .section-0 polygon,#mermaid-svg-ScJ4GA1S67DKlqgR .section-0 path{fill:hsl(60, 100%, 73.5294117647%);}#mermaid-svg-ScJ4GA1S67DKlqgR .section-0 text{fill:black;}#mermaid-svg-ScJ4GA1S67DKlqgR .node-icon-0{font-size:40px;color:black;}#mermaid-svg-ScJ4GA1S67DKlqgR .section-edge-0{stroke:hsl(60, 100%, 73.5294117647%);}#mermaid-svg-ScJ4GA1S67DKlqgR .edge-depth-0{stroke-width:14;}#mermaid-svg-ScJ4GA1S67DKlqgR .section-0 line{stroke:hsl(240, 100%, 83.5294117647%);stroke-width:3;}#mermaid-svg-ScJ4GA1S67DKlqgR .disabled,#mermaid-svg-ScJ4GA1S67DKlqgR .disabled circle,#mermaid-svg-ScJ4GA1S67DKlqgR .disabled text{fill:lightgray;}#mermaid-svg-ScJ4GA1S67DKlqgR .disabled text{fill:#efefef;}#mermaid-svg-ScJ4GA1S67DKlqgR .section-1 rect,#mermaid-svg-ScJ4GA1S67DKlqgR .section-1 path,#mermaid-svg-ScJ4GA1S67DKlqgR .section-1 circle,#mermaid-svg-ScJ4GA1S67DKlqgR .section-1 polygon,#mermaid-svg-ScJ4GA1S67DKlqgR .section-1 path{fill:hsl(80, 100%, 76.2745098039%);}#mermaid-svg-ScJ4GA1S67DKlqgR .section-1 text{fill:black;}#mermaid-svg-ScJ4GA1S67DKlqgR .node-icon-1{font-size:40px;color:black;}#mermaid-svg-ScJ4GA1S67DKlqgR .section-edge-1{stroke:hsl(80, 100%, 76.2745098039%);}#mermaid-svg-ScJ4GA1S67DKlqgR .edge-depth-1{stroke-width:11;}#mermaid-svg-ScJ4GA1S67DKlqgR .section-1 line{stroke:hsl(260, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-ScJ4GA1S67DKlqgR .disabled,#mermaid-svg-ScJ4GA1S67DKlqgR .disabled circle,#mermaid-svg-ScJ4GA1S67DKlqgR .disabled text{fill:lightgray;}#mermaid-svg-ScJ4GA1S67DKlqgR .disabled text{fill:#efefef;}#mermaid-svg-ScJ4GA1S67DKlqgR .section-2 rect,#mermaid-svg-ScJ4GA1S67DKlqgR .section-2 path,#mermaid-svg-ScJ4GA1S67DKlqgR .section-2 circle,#mermaid-svg-ScJ4GA1S67DKlqgR .section-2 polygon,#mermaid-svg-ScJ4GA1S67DKlqgR .section-2 path{fill:hsl(270, 100%, 76.2745098039%);}#mermaid-svg-ScJ4GA1S67DKlqgR .section-2 text{fill:#ffffff;}#mermaid-svg-ScJ4GA1S67DKlqgR .node-icon-2{font-size:40px;color:#ffffff;}#mermaid-svg-ScJ4GA1S67DKlqgR .section-edge-2{stroke:hsl(270, 100%, 76.2745098039%);}#mermaid-svg-ScJ4GA1S67DKlqgR .edge-depth-2{stroke-width:8;}#mermaid-svg-ScJ4GA1S67DKlqgR .section-2 line{stroke:hsl(90, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-ScJ4GA1S67DKlqgR .disabled,#mermaid-svg-ScJ4GA1S67DKlqgR .disabled circle,#mermaid-svg-ScJ4GA1S67DKlqgR .disabled text{fill:lightgray;}#mermaid-svg-ScJ4GA1S67DKlqgR .disabled text{fill:#efefef;}#mermaid-svg-ScJ4GA1S67DKlqgR .section-3 rect,#mermaid-svg-ScJ4GA1S67DKlqgR .section-3 path,#mermaid-svg-ScJ4GA1S67DKlqgR .section-3 circle,#mermaid-svg-ScJ4GA1S67DKlqgR .section-3 polygon,#mermaid-svg-ScJ4GA1S67DKlqgR .section-3 path{fill:hsl(300, 100%, 76.2745098039%);}#mermaid-svg-ScJ4GA1S67DKlqgR .section-3 text{fill:black;}#mermaid-svg-ScJ4GA1S67DKlqgR .node-icon-3{font-size:40px;color:black;}#mermaid-svg-ScJ4GA1S67DKlqgR .section-edge-3{stroke:hsl(300, 100%, 76.2745098039%);}#mermaid-svg-ScJ4GA1S67DKlqgR .edge-depth-3{stroke-width:5;}#mermaid-svg-ScJ4GA1S67DKlqgR .section-3 line{stroke:hsl(120, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-ScJ4GA1S67DKlqgR .disabled,#mermaid-svg-ScJ4GA1S67DKlqgR .disabled circle,#mermaid-svg-ScJ4GA1S67DKlqgR .disabled text{fill:lightgray;}#mermaid-svg-ScJ4GA1S67DKlqgR .disabled text{fill:#efefef;}#mermaid-svg-ScJ4GA1S67DKlqgR .section-4 rect,#mermaid-svg-ScJ4GA1S67DKlqgR .section-4 path,#mermaid-svg-ScJ4GA1S67DKlqgR .section-4 circle,#mermaid-svg-ScJ4GA1S67DKlqgR .section-4 polygon,#mermaid-svg-ScJ4GA1S67DKlqgR .section-4 path{fill:hsl(330, 100%, 76.2745098039%);}#mermaid-svg-ScJ4GA1S67DKlqgR .section-4 text{fill:black;}#mermaid-svg-ScJ4GA1S67DKlqgR .node-icon-4{font-size:40px;color:black;}#mermaid-svg-ScJ4GA1S67DKlqgR .section-edge-4{stroke:hsl(330, 100%, 76.2745098039%);}#mermaid-svg-ScJ4GA1S67DKlqgR .edge-depth-4{stroke-width:2;}#mermaid-svg-ScJ4GA1S67DKlqgR .section-4 line{stroke:hsl(150, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-ScJ4GA1S67DKlqgR .disabled,#mermaid-svg-ScJ4GA1S67DKlqgR .disabled circle,#mermaid-svg-ScJ4GA1S67DKlqgR .disabled text{fill:lightgray;}#mermaid-svg-ScJ4GA1S67DKlqgR .disabled text{fill:#efefef;}#mermaid-svg-ScJ4GA1S67DKlqgR .section-5 rect,#mermaid-svg-ScJ4GA1S67DKlqgR .section-5 path,#mermaid-svg-ScJ4GA1S67DKlqgR .section-5 circle,#mermaid-svg-ScJ4GA1S67DKlqgR .section-5 polygon,#mermaid-svg-ScJ4GA1S67DKlqgR .section-5 path{fill:hsl(0, 100%, 76.2745098039%);}#mermaid-svg-ScJ4GA1S67DKlqgR .section-5 text{fill:black;}#mermaid-svg-ScJ4GA1S67DKlqgR .node-icon-5{font-size:40px;color:black;}#mermaid-svg-ScJ4GA1S67DKlqgR .section-edge-5{stroke:hsl(0, 100%, 76.2745098039%);}#mermaid-svg-ScJ4GA1S67DKlqgR .edge-depth-5{stroke-width:-1;}#mermaid-svg-ScJ4GA1S67DKlqgR .section-5 line{stroke:hsl(180, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-ScJ4GA1S67DKlqgR .disabled,#mermaid-svg-ScJ4GA1S67DKlqgR .disabled circle,#mermaid-svg-ScJ4GA1S67DKlqgR .disabled text{fill:lightgray;}#mermaid-svg-ScJ4GA1S67DKlqgR .disabled text{fill:#efefef;}#mermaid-svg-ScJ4GA1S67DKlqgR .section-6 rect,#mermaid-svg-ScJ4GA1S67DKlqgR .section-6 path,#mermaid-svg-ScJ4GA1S67DKlqgR .section-6 circle,#mermaid-svg-ScJ4GA1S67DKlqgR .section-6 polygon,#mermaid-svg-ScJ4GA1S67DKlqgR .section-6 path{fill:hsl(30, 100%, 76.2745098039%);}#mermaid-svg-ScJ4GA1S67DKlqgR .section-6 text{fill:black;}#mermaid-svg-ScJ4GA1S67DKlqgR .node-icon-6{font-size:40px;color:black;}#mermaid-svg-ScJ4GA1S67DKlqgR .section-edge-6{stroke:hsl(30, 100%, 76.2745098039%);}#mermaid-svg-ScJ4GA1S67DKlqgR .edge-depth-6{stroke-width:-4;}#mermaid-svg-ScJ4GA1S67DKlqgR .section-6 line{stroke:hsl(210, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-ScJ4GA1S67DKlqgR .disabled,#mermaid-svg-ScJ4GA1S67DKlqgR .disabled circle,#mermaid-svg-ScJ4GA1S67DKlqgR .disabled text{fill:lightgray;}#mermaid-svg-ScJ4GA1S67DKlqgR .disabled text{fill:#efefef;}#mermaid-svg-ScJ4GA1S67DKlqgR .section-7 rect,#mermaid-svg-ScJ4GA1S67DKlqgR .section-7 path,#mermaid-svg-ScJ4GA1S67DKlqgR .section-7 circle,#mermaid-svg-ScJ4GA1S67DKlqgR .section-7 polygon,#mermaid-svg-ScJ4GA1S67DKlqgR .section-7 path{fill:hsl(90, 100%, 76.2745098039%);}#mermaid-svg-ScJ4GA1S67DKlqgR .section-7 text{fill:black;}#mermaid-svg-ScJ4GA1S67DKlqgR .node-icon-7{font-size:40px;color:black;}#mermaid-svg-ScJ4GA1S67DKlqgR .section-edge-7{stroke:hsl(90, 100%, 76.2745098039%);}#mermaid-svg-ScJ4GA1S67DKlqgR .edge-depth-7{stroke-width:-7;}#mermaid-svg-ScJ4GA1S67DKlqgR .section-7 line{stroke:hsl(270, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-ScJ4GA1S67DKlqgR .disabled,#mermaid-svg-ScJ4GA1S67DKlqgR .disabled circle,#mermaid-svg-ScJ4GA1S67DKlqgR .disabled text{fill:lightgray;}#mermaid-svg-ScJ4GA1S67DKlqgR .disabled text{fill:#efefef;}#mermaid-svg-ScJ4GA1S67DKlqgR .section-8 rect,#mermaid-svg-ScJ4GA1S67DKlqgR .section-8 path,#mermaid-svg-ScJ4GA1S67DKlqgR .section-8 circle,#mermaid-svg-ScJ4GA1S67DKlqgR .section-8 polygon,#mermaid-svg-ScJ4GA1S67DKlqgR .section-8 path{fill:hsl(150, 100%, 76.2745098039%);}#mermaid-svg-ScJ4GA1S67DKlqgR .section-8 text{fill:black;}#mermaid-svg-ScJ4GA1S67DKlqgR .node-icon-8{font-size:40px;color:black;}#mermaid-svg-ScJ4GA1S67DKlqgR .section-edge-8{stroke:hsl(150, 100%, 76.2745098039%);}#mermaid-svg-ScJ4GA1S67DKlqgR .edge-depth-8{stroke-width:-10;}#mermaid-svg-ScJ4GA1S67DKlqgR .section-8 line{stroke:hsl(330, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-ScJ4GA1S67DKlqgR .disabled,#mermaid-svg-ScJ4GA1S67DKlqgR .disabled circle,#mermaid-svg-ScJ4GA1S67DKlqgR .disabled text{fill:lightgray;}#mermaid-svg-ScJ4GA1S67DKlqgR .disabled text{fill:#efefef;}#mermaid-svg-ScJ4GA1S67DKlqgR .section-9 rect,#mermaid-svg-ScJ4GA1S67DKlqgR .section-9 path,#mermaid-svg-ScJ4GA1S67DKlqgR .section-9 circle,#mermaid-svg-ScJ4GA1S67DKlqgR .section-9 polygon,#mermaid-svg-ScJ4GA1S67DKlqgR .section-9 path{fill:hsl(180, 100%, 76.2745098039%);}#mermaid-svg-ScJ4GA1S67DKlqgR .section-9 text{fill:black;}#mermaid-svg-ScJ4GA1S67DKlqgR .node-icon-9{font-size:40px;color:black;}#mermaid-svg-ScJ4GA1S67DKlqgR .section-edge-9{stroke:hsl(180, 100%, 76.2745098039%);}#mermaid-svg-ScJ4GA1S67DKlqgR .edge-depth-9{stroke-width:-13;}#mermaid-svg-ScJ4GA1S67DKlqgR .section-9 line{stroke:hsl(0, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-ScJ4GA1S67DKlqgR .disabled,#mermaid-svg-ScJ4GA1S67DKlqgR .disabled circle,#mermaid-svg-ScJ4GA1S67DKlqgR .disabled text{fill:lightgray;}#mermaid-svg-ScJ4GA1S67DKlqgR .disabled text{fill:#efefef;}#mermaid-svg-ScJ4GA1S67DKlqgR .section-10 rect,#mermaid-svg-ScJ4GA1S67DKlqgR .section-10 path,#mermaid-svg-ScJ4GA1S67DKlqgR .section-10 circle,#mermaid-svg-ScJ4GA1S67DKlqgR .section-10 polygon,#mermaid-svg-ScJ4GA1S67DKlqgR .section-10 path{fill:hsl(210, 100%, 76.2745098039%);}#mermaid-svg-ScJ4GA1S67DKlqgR .section-10 text{fill:black;}#mermaid-svg-ScJ4GA1S67DKlqgR .node-icon-10{font-size:40px;color:black;}#mermaid-svg-ScJ4GA1S67DKlqgR .section-edge-10{stroke:hsl(210, 100%, 76.2745098039%);}#mermaid-svg-ScJ4GA1S67DKlqgR .edge-depth-10{stroke-width:-16;}#mermaid-svg-ScJ4GA1S67DKlqgR .section-10 line{stroke:hsl(30, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-ScJ4GA1S67DKlqgR .disabled,#mermaid-svg-ScJ4GA1S67DKlqgR .disabled circle,#mermaid-svg-ScJ4GA1S67DKlqgR .disabled text{fill:lightgray;}#mermaid-svg-ScJ4GA1S67DKlqgR .disabled text{fill:#efefef;}#mermaid-svg-ScJ4GA1S67DKlqgR .section-root rect,#mermaid-svg-ScJ4GA1S67DKlqgR .section-root path,#mermaid-svg-ScJ4GA1S67DKlqgR .section-root circle,#mermaid-svg-ScJ4GA1S67DKlqgR .section-root polygon{fill:hsl(240, 100%, 46.2745098039%);}#mermaid-svg-ScJ4GA1S67DKlqgR .section-root text{fill:#ffffff;}#mermaid-svg-ScJ4GA1S67DKlqgR .section-root span{color:#ffffff;}#mermaid-svg-ScJ4GA1S67DKlqgR .section-2 span{color:#ffffff;}#mermaid-svg-ScJ4GA1S67DKlqgR .icon-container{height:100%;display:flex;justify-content:center;align-items:center;}#mermaid-svg-ScJ4GA1S67DKlqgR .edge{fill:none;}#mermaid-svg-ScJ4GA1S67DKlqgR .mindmap-node-label{dy:1em;alignment-baseline:middle;text-anchor:middle;dominant-baseline:middle;text-align:center;}#mermaid-svg-ScJ4GA1S67DKlqgR :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Harness平台
CI
持续集成即服务
Test Intelligence
缓存智能
容器化流水线
CD
持续交付
多环境部署
金丝雀/蓝绿部署
自动回滚
Feature Flags
功能开关
解耦部署与发布
灰度发布
目标用户定向
CCM
云成本管理
成本可视化
AutoStopping
异常检测
SRM
服务可靠性管理
SLO/SLI管理
错误预算
自动回滚
GitOps
Git作为唯一真相源
Argo CD集成
多集群管理
IDP
内部开发者门户
软件目录
自助工作流
评分卡
STO
安全测试编排
50+工具集成
智能去重
AI修复建议

4.1 CI:持续集成即服务

Harness CI是平台的核心入口之一,它将构建和测试工作流建模为流水线(Pipeline) 。流水线内部划分为多个阶段(Stage),每个阶段包含执行具体任务的步骤(Step)。

核心特性

  • 容器化执行:所有CI步骤都运行在容器中,语言无关,不依赖本地环境。
  • CI Intelligence:测试智能(Test Intelligence)只运行受代码变更影响的测试,可缩短50%-90%的构建时间;缓存智能自动管理依赖和Docker层缓存。
  • CI Cloud:Harness托管的云端构建基础设施,支持Linux、Windows、macOS,预配置常用工具。
  • 无缝集成:CI与CD、Feature Flags、CCM、STO等模块原生集成。

4.2 CD:持续交付

CD是Harness最早也是最核心的模块,专注于多环境部署编排和安全发布。

核心能力

  • 多云/混合云部署:支持Kubernetes(EKS、GKE、AKS)、ECS、Azure Container Apps、Serverless Framework、Salesforce等多种平台。
  • 部署策略:标准滚动更新、金丝雀部署(如20%→70%→100%流量渐进切换)、蓝绿部署等。
  • 自动回滚:结合SRM的SLO监测,自动回滚有问题的部署。
  • 策略即代码:通过OPA集成强制合规检查。

4.3 Feature Flags(FME):功能管理

Feature Flags允许在代码路径中选择不同的执行分支,实现"部署与发布解耦",即把新特性以关闭状态部署到生产,再通过开关控制逐步开启。

核心机制

  • 确定性哈希分桶:基于User ID和Flag Seed的确定性哈希,确保同一用户每次分到相同的体验。
  • 实时流式推送:使用Server-Sent Events在几百毫秒内将Flag变更推送至所有SDK实例。
  • 双模式通信:同时支持流式和轮询模式,兼顾实时性和连接稳定性。

4.4 CCM:云成本管理

CCM是Harness FinOps能力的关键,帮助企业监控、分析和优化云支出。

核心能力

  • 多云支持:AWS、Azure、GCP、Kubernetes的全栈成本覆盖,支持Cost Reporting、Dashboards、Anomaly Detection等。
  • AutoStopping:自动检测并关闭空闲资源,可节省非生产环境中高达70%的云成本。
  • 成本治理:Budgets设置支出上限、Asset Governance强制成本效率策略。

4.5 SRM:服务可靠性管理

SRM通过SLO驱动的可靠性防护,在持续交付速度与生产稳定性之间建立平衡。

核心能力

  • SLO/SLI可视化配置:通过GUI或API定义可靠性目标。
  • 集成主流可观测性工具:原生支持Datadog、Prometheus、New Relic等APM/日志工具。
  • 错误预算监控:实时追踪错误预算消耗,消耗过快时发出警报。
  • CI/CD防护闸:在部署前检查错误预算,如果错误预算不足则阻止部署。
  • 自动回滚:当SLO条件被触发时,自动回滚到上一个稳定版本。

4.6 GitOps:以Git为唯一真实源

Harness GitOps提供企业级GitOps方案,核心架构是:Git定义期望状态 → Argo CD强制执行 → Harness提供治理和可观测性。

核心能力

  • 自动同步:Harness GitOps Agent作为轻量级工作进程运行在K8s集群中,自动将Git仓库中的配置同步到集群。
  • Argo Rollouts支持:支持高级渐进式交付策略(金丝雀、蓝绿)。
  • 不可变版本管理:通过GitX功能支持不可变版本,对Feature Branch的批量变更在合并前完成验证。

4.7 IDP 2.0:内部开发者门户

Harness IDP基于CNCF开源项目Backstage构建,在此基础上增加了企业级能力。2025年6月,Harness发布了IDP 2.0,进一步提升开发者体验。

核心能力

  • 软件目录:统一的服务、API、组件注册中心,支持自动从Git和Harness CD导入元数据。
  • 自助工作流:平台工程师构建"黄金路径"模板,开发者通过表单自助创建服务、配置管道。
  • 评分卡:定义质量标准(安全、可靠性、文档成熟度),自动评估打分。
  • 环境管理:标准化蓝图创建和管理环境。
  • 企业级优势:相比自托管Backstage,Harness IDP提供开箱即用的RBAC、审计日志、托管运维、API优先的可扩展性。

4.8 STO:安全测试编排

STO是一个统一的应用安全测试编排平台,与50多个安全扫描器预集成。

核心能力

  • 50+预集成扫描器:SAST(Sonar、Checkmarx、Semgrep)、SCA(Snyk、JFrog)、容器扫描(Trivy、Grype)、DAST等。
  • 智能去重与优先级排序:自动去重和优先级排序,减少告警噪音。
  • AI驱动修复:Harness AI分析安全发现,生成修复建议甚至创建修复PR。
  • 流水线级策略:通过OPA强制执行安全合规策略。

五、AI原生架构解析:AIDA与知识图谱

Harness的AI能力不是"挂件",而是从架构层面原生设计。其核心组件是AIDA(AI Development Assistant)Software Delivery Knowledge Graph(软件交付知识图谱)

5.1 AIDA:贯穿SDLC的AI助手

AIDA是Harness的生成式AI助手,根据官方数据,它可以提升软件工程团队30%-50%的生产力。

核心能力

  • CI/CD流水线AI辅助:自动生成Pipeline YAML,修复构建失败,分析日志根因。
  • 安全漏洞自动修复:基于CVEs和CWEs训练,自动识别漏洞并生成修复代码。
  • 云成本自然语言管理:通过自然语言定义成本治理策略。
  • 数据隐私保护:专有客户数据默认不上传,采用混合模型架构(云API+私有LLM)。

5.2 Software Delivery Knowledge Graph

在多模块平台上让AI给出正确、一致的答案,知识图谱比原始API调用更可靠

问题的本质:直接暴露MCP接口让LLM调用API存在以下问题------Agent需发现多个模块的API(约2000 token)、拉取大量原始数据(~15-30万 token)、多API调用易出错和高延迟。最终总共需要5+次LLM调用,耗费25万-35万输入token。

知识图谱路径的解决方案

  • 类型选择器:解析问题,从Schema目录中选择正确的实体类型(~4000 token)
  • HQL查询构建器:基于已知关系生成2-3条Harness Query Language查询
  • 知识图谱执行:返回结构化聚合结果(~2000 token)
  • Agent总结:对结构化输出总结(~3000 token)

最终仅需2-3次LLM调用,约1.2万输入token,Token成本降低15-25倍,输出确定无幻觉。

Harness为知识图谱构建了专用查询语言HQL,存储丰富字段元数据(字段类型、显示名、单位等),供AI Agent精确理解和查询。
图5:知识图谱 vs 原始API(MCP)对比示意图
#mermaid-svg-ZahrWZDn3CnsX52w{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-ZahrWZDn3CnsX52w .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-ZahrWZDn3CnsX52w .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-ZahrWZDn3CnsX52w .error-icon{fill:#552222;}#mermaid-svg-ZahrWZDn3CnsX52w .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-ZahrWZDn3CnsX52w .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-ZahrWZDn3CnsX52w .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-ZahrWZDn3CnsX52w .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-ZahrWZDn3CnsX52w .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-ZahrWZDn3CnsX52w .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-ZahrWZDn3CnsX52w .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-ZahrWZDn3CnsX52w .marker{fill:#333333;stroke:#333333;}#mermaid-svg-ZahrWZDn3CnsX52w .marker.cross{stroke:#333333;}#mermaid-svg-ZahrWZDn3CnsX52w svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-ZahrWZDn3CnsX52w p{margin:0;}#mermaid-svg-ZahrWZDn3CnsX52w .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-ZahrWZDn3CnsX52w .cluster-label text{fill:#333;}#mermaid-svg-ZahrWZDn3CnsX52w .cluster-label span{color:#333;}#mermaid-svg-ZahrWZDn3CnsX52w .cluster-label span p{background-color:transparent;}#mermaid-svg-ZahrWZDn3CnsX52w .label text,#mermaid-svg-ZahrWZDn3CnsX52w span{fill:#333;color:#333;}#mermaid-svg-ZahrWZDn3CnsX52w .node rect,#mermaid-svg-ZahrWZDn3CnsX52w .node circle,#mermaid-svg-ZahrWZDn3CnsX52w .node ellipse,#mermaid-svg-ZahrWZDn3CnsX52w .node polygon,#mermaid-svg-ZahrWZDn3CnsX52w .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-ZahrWZDn3CnsX52w .rough-node .label text,#mermaid-svg-ZahrWZDn3CnsX52w .node .label text,#mermaid-svg-ZahrWZDn3CnsX52w .image-shape .label,#mermaid-svg-ZahrWZDn3CnsX52w .icon-shape .label{text-anchor:middle;}#mermaid-svg-ZahrWZDn3CnsX52w .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-ZahrWZDn3CnsX52w .rough-node .label,#mermaid-svg-ZahrWZDn3CnsX52w .node .label,#mermaid-svg-ZahrWZDn3CnsX52w .image-shape .label,#mermaid-svg-ZahrWZDn3CnsX52w .icon-shape .label{text-align:center;}#mermaid-svg-ZahrWZDn3CnsX52w .node.clickable{cursor:pointer;}#mermaid-svg-ZahrWZDn3CnsX52w .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-ZahrWZDn3CnsX52w .arrowheadPath{fill:#333333;}#mermaid-svg-ZahrWZDn3CnsX52w .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-ZahrWZDn3CnsX52w .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-ZahrWZDn3CnsX52w .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-ZahrWZDn3CnsX52w .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-ZahrWZDn3CnsX52w .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-ZahrWZDn3CnsX52w .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-ZahrWZDn3CnsX52w .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-ZahrWZDn3CnsX52w .cluster text{fill:#333;}#mermaid-svg-ZahrWZDn3CnsX52w .cluster span{color:#333;}#mermaid-svg-ZahrWZDn3CnsX52w div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-ZahrWZDn3CnsX52w .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-ZahrWZDn3CnsX52w rect.text{fill:none;stroke-width:0;}#mermaid-svg-ZahrWZDn3CnsX52w .icon-shape,#mermaid-svg-ZahrWZDn3CnsX52w .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-ZahrWZDn3CnsX52w .icon-shape p,#mermaid-svg-ZahrWZDn3CnsX52w .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-ZahrWZDn3CnsX52w .icon-shape .label rect,#mermaid-svg-ZahrWZDn3CnsX52w .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-ZahrWZDn3CnsX52w .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-ZahrWZDn3CnsX52w .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-ZahrWZDn3CnsX52w :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 知识图谱路径
用户问题
类型选择器

~4000 tokens
HQL查询构建

2-3条查询
知识图谱执行

结构化聚合
Agent总结

~3000 tokens
输出

总token: 约1.2万
原始API路径
用户问题
发现API

~2000 tokens
调用Pipeline API

~10万-15万 tokens
调用CD API

~5万-8万 tokens
调用STO API

~4万-6万 tokens
综合结果

~3万-5万 tokens
输出

总token: 25万-35万

六、部署形态与选型:SaaS vs Self-Managed vs Community

Harness提供三种部署形态,以适应不同规模和需求的团队。

6.1 三种部署形态对比

特性 SaaS(云托管) Self-Managed Enterprise(自托管企业版) Community/Open Source(社区版)
适用场景 大多数企业/团队 金融、政府等合规严格场景 个人学习、POC验证、小团队
运维责任 Harness全托管 用户自行运维 用户自行部署运维
功能完整度 100%(所有模块) 核心模块可用(部分高级功能受限) 仅基础CD
部署位置 Harness云端 用户AWS/自有数据中心 本地Docker/VM
成本 按模块/开发者数订阅 企业协议 免费
支持渠道 官方支持+社区 企业级支持 社区+文档

6.2 SaaS(云托管)

绝大多数用户的选择。只需注册账号,即可开始使用。Harness负责平台升级、安全更新、基础设施扩展,用户无需关心运维工作。提供按年/按月灵活订阅,支持开发者许可证数和MAU的自选组合。

6.3 Self-Managed Enterprise Edition(自托管企业版)

适用于金融、政府、医疗等对数据主权有严格要求的行业。用户可在自己的AWS环境或数据中心中部署完整Harness平台,所有数据保留在用户环境中。核心模块基本可用,但部分高级功能(如AutoStopping的高级云优化算法)可能存在功能缩减。自托管企业版仅支持AWS作为安装基础设施。

6.4 Community Edition / Open Source(社区版)

⚠️ 重要说明:截至2023年12月,原Harness CD Community Edition已被Harness Open Source取代。

  • 核心能力:仅支持Kubernetes部署场景,不包含CI、Feature Flags、CCM等高级模块。
  • 部署门槛:3GB RAM + 2 CPU即可在本地Docker或VM上运行。
  • 适用人群:学习Harness核心概念的个人开发者、在K8s上进行POC验证的团队。

图6:部署形态选型决策树
#mermaid-svg-O02zSzdKp4yB0Qa6{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-O02zSzdKp4yB0Qa6 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-O02zSzdKp4yB0Qa6 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-O02zSzdKp4yB0Qa6 .error-icon{fill:#552222;}#mermaid-svg-O02zSzdKp4yB0Qa6 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-O02zSzdKp4yB0Qa6 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-O02zSzdKp4yB0Qa6 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-O02zSzdKp4yB0Qa6 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-O02zSzdKp4yB0Qa6 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-O02zSzdKp4yB0Qa6 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-O02zSzdKp4yB0Qa6 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-O02zSzdKp4yB0Qa6 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-O02zSzdKp4yB0Qa6 .marker.cross{stroke:#333333;}#mermaid-svg-O02zSzdKp4yB0Qa6 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-O02zSzdKp4yB0Qa6 p{margin:0;}#mermaid-svg-O02zSzdKp4yB0Qa6 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-O02zSzdKp4yB0Qa6 .cluster-label text{fill:#333;}#mermaid-svg-O02zSzdKp4yB0Qa6 .cluster-label span{color:#333;}#mermaid-svg-O02zSzdKp4yB0Qa6 .cluster-label span p{background-color:transparent;}#mermaid-svg-O02zSzdKp4yB0Qa6 .label text,#mermaid-svg-O02zSzdKp4yB0Qa6 span{fill:#333;color:#333;}#mermaid-svg-O02zSzdKp4yB0Qa6 .node rect,#mermaid-svg-O02zSzdKp4yB0Qa6 .node circle,#mermaid-svg-O02zSzdKp4yB0Qa6 .node ellipse,#mermaid-svg-O02zSzdKp4yB0Qa6 .node polygon,#mermaid-svg-O02zSzdKp4yB0Qa6 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-O02zSzdKp4yB0Qa6 .rough-node .label text,#mermaid-svg-O02zSzdKp4yB0Qa6 .node .label text,#mermaid-svg-O02zSzdKp4yB0Qa6 .image-shape .label,#mermaid-svg-O02zSzdKp4yB0Qa6 .icon-shape .label{text-anchor:middle;}#mermaid-svg-O02zSzdKp4yB0Qa6 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-O02zSzdKp4yB0Qa6 .rough-node .label,#mermaid-svg-O02zSzdKp4yB0Qa6 .node .label,#mermaid-svg-O02zSzdKp4yB0Qa6 .image-shape .label,#mermaid-svg-O02zSzdKp4yB0Qa6 .icon-shape .label{text-align:center;}#mermaid-svg-O02zSzdKp4yB0Qa6 .node.clickable{cursor:pointer;}#mermaid-svg-O02zSzdKp4yB0Qa6 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-O02zSzdKp4yB0Qa6 .arrowheadPath{fill:#333333;}#mermaid-svg-O02zSzdKp4yB0Qa6 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-O02zSzdKp4yB0Qa6 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-O02zSzdKp4yB0Qa6 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-O02zSzdKp4yB0Qa6 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-O02zSzdKp4yB0Qa6 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-O02zSzdKp4yB0Qa6 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-O02zSzdKp4yB0Qa6 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-O02zSzdKp4yB0Qa6 .cluster text{fill:#333;}#mermaid-svg-O02zSzdKp4yB0Qa6 .cluster span{color:#333;}#mermaid-svg-O02zSzdKp4yB0Qa6 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-O02zSzdKp4yB0Qa6 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-O02zSzdKp4yB0Qa6 rect.text{fill:none;stroke-width:0;}#mermaid-svg-O02zSzdKp4yB0Qa6 .icon-shape,#mermaid-svg-O02zSzdKp4yB0Qa6 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-O02zSzdKp4yB0Qa6 .icon-shape p,#mermaid-svg-O02zSzdKp4yB0Qa6 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-O02zSzdKp4yB0Qa6 .icon-shape .label rect,#mermaid-svg-O02zSzdKp4yB0Qa6 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-O02zSzdKp4yB0Qa6 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-O02zSzdKp4yB0Qa6 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-O02zSzdKp4yB0Qa6 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 是,金融/政府/医疗

个人学习/POC
生产使用
选择部署形态
是否有严格数据合规要求?
Self-Managed Enterprise

自托管企业版
团队规模/预算?
Open Source

社区版 - K8s only
Harness SaaS

云托管
免运维

功能完整

按需付费
数据完全自控

核心CD功能

需企业运维能力
完全免费

仅K8s部署

社区支持

七、实战:5分钟创建第一条流水线

纸上得来终觉浅,绝知此事要躬行。下面带你在Harness平台上5分钟内创建第一条CI/CD流水线。

7.1 前置准备

  • 注册Harness SaaS账号(提供免费额度)
  • 准备一个GitHub仓库(包含简单的应用代码,如Node.js/Go/Python)
  • 一个云端目标部署环境(如Kubernetes集群或ECS)

7.2 核心概念速览

在开始前,理解以下核心概念至关重要:

概念 英文 解释
组织 Organization 团队的最高逻辑边界
项目 Project 组织内的工作单元,包含资源、管道、触发器等
流水线 Pipeline CI/CD工作流的定义,包含多个阶段和步骤
阶段 Stage 流水线的逻辑分区(如Build、Deploy、Verify)
步骤 Step 阶段内的最小执行单元
连接器 Connector 连接外部系统(GitHub、Docker Hub、K8s)的配置
服务 Service 定义待部署应用实体的配置抽象
环境 Environment 部署目标(Dev、Staging、Prod)

图7:Harness核心概念层次图
#mermaid-svg-spfOPlxmpuIcvo4q{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-spfOPlxmpuIcvo4q .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-spfOPlxmpuIcvo4q .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-spfOPlxmpuIcvo4q .error-icon{fill:#552222;}#mermaid-svg-spfOPlxmpuIcvo4q .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-spfOPlxmpuIcvo4q .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-spfOPlxmpuIcvo4q .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-spfOPlxmpuIcvo4q .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-spfOPlxmpuIcvo4q .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-spfOPlxmpuIcvo4q .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-spfOPlxmpuIcvo4q .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-spfOPlxmpuIcvo4q .marker{fill:#333333;stroke:#333333;}#mermaid-svg-spfOPlxmpuIcvo4q .marker.cross{stroke:#333333;}#mermaid-svg-spfOPlxmpuIcvo4q svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-spfOPlxmpuIcvo4q p{margin:0;}#mermaid-svg-spfOPlxmpuIcvo4q .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-spfOPlxmpuIcvo4q .cluster-label text{fill:#333;}#mermaid-svg-spfOPlxmpuIcvo4q .cluster-label span{color:#333;}#mermaid-svg-spfOPlxmpuIcvo4q .cluster-label span p{background-color:transparent;}#mermaid-svg-spfOPlxmpuIcvo4q .label text,#mermaid-svg-spfOPlxmpuIcvo4q span{fill:#333;color:#333;}#mermaid-svg-spfOPlxmpuIcvo4q .node rect,#mermaid-svg-spfOPlxmpuIcvo4q .node circle,#mermaid-svg-spfOPlxmpuIcvo4q .node ellipse,#mermaid-svg-spfOPlxmpuIcvo4q .node polygon,#mermaid-svg-spfOPlxmpuIcvo4q .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-spfOPlxmpuIcvo4q .rough-node .label text,#mermaid-svg-spfOPlxmpuIcvo4q .node .label text,#mermaid-svg-spfOPlxmpuIcvo4q .image-shape .label,#mermaid-svg-spfOPlxmpuIcvo4q .icon-shape .label{text-anchor:middle;}#mermaid-svg-spfOPlxmpuIcvo4q .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-spfOPlxmpuIcvo4q .rough-node .label,#mermaid-svg-spfOPlxmpuIcvo4q .node .label,#mermaid-svg-spfOPlxmpuIcvo4q .image-shape .label,#mermaid-svg-spfOPlxmpuIcvo4q .icon-shape .label{text-align:center;}#mermaid-svg-spfOPlxmpuIcvo4q .node.clickable{cursor:pointer;}#mermaid-svg-spfOPlxmpuIcvo4q .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-spfOPlxmpuIcvo4q .arrowheadPath{fill:#333333;}#mermaid-svg-spfOPlxmpuIcvo4q .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-spfOPlxmpuIcvo4q .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-spfOPlxmpuIcvo4q .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-spfOPlxmpuIcvo4q .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-spfOPlxmpuIcvo4q .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-spfOPlxmpuIcvo4q .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-spfOPlxmpuIcvo4q .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-spfOPlxmpuIcvo4q .cluster text{fill:#333;}#mermaid-svg-spfOPlxmpuIcvo4q .cluster span{color:#333;}#mermaid-svg-spfOPlxmpuIcvo4q div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-spfOPlxmpuIcvo4q .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-spfOPlxmpuIcvo4q rect.text{fill:none;stroke-width:0;}#mermaid-svg-spfOPlxmpuIcvo4q .icon-shape,#mermaid-svg-spfOPlxmpuIcvo4q .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-spfOPlxmpuIcvo4q .icon-shape p,#mermaid-svg-spfOPlxmpuIcvo4q .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-spfOPlxmpuIcvo4q .icon-shape .label rect,#mermaid-svg-spfOPlxmpuIcvo4q .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-spfOPlxmpuIcvo4q .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-spfOPlxmpuIcvo4q .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-spfOPlxmpuIcvo4q :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Account

账号
Organization

组织
Project

项目
Pipeline

流水线
Stage

阶段
Step

步骤
Connector

连接器
Service

服务
Environment

环境

7.3 分步创建流程

步骤1:创建项目

登录Harness平台后,点击左上角的"Projects",选择"+ New Project"。填写项目名称、描述,选择项目所属组织。

步骤2:添加连接器

项目创建后,进入项目设置,添加至少三个连接器:

  • GitHub连接器:授权Harness访问你的代码仓库
  • Docker Registry连接器:用于推送构建好的镜像
  • Kubernetes连接器:如果是K8s部署场景,配置K8s集群认证

步骤3:定义服务

进入服务模块,选择"+ New Service"。填写服务名称,选择部署类型(Kubernetes/ECS/VM等),定义服务所需的清单文件位置或配置信息。

步骤4:定义环境

进入环境模块,选择"+ New Environment"。填写环境名称,选择环境类型(Production/Pre-Production/Non-Production),配置基础设施连接器。

步骤5:创建流水线

进入管道模块,点击"+ New Pipeline",选择从空白管道开始或使用模板。管道可采用三种编辑方式:可视化管道生成器(拖拽式)、YAML编辑器(完全声明式)、AI辅助生成(自然语言描述目标)。

步骤6:构建管道逻辑

  • 添加CI阶段:代码检出 → 依赖安装 → 测试执行 → Docker镜像构建 → 镜像推送
  • 添加CD阶段:K8s部署步骤(或ECS/其他目标平台)→ 健康检查
  • 添加触发器:配置Git Push触发、定时触发、Webhook等

步骤7:执行与监控

保存管道后,点击"Run"运行。可通过管道执行视图实时查看每个步骤的日志和状态。

7.4 示例流水线YAML(简化版)

yaml 复制代码
pipeline:
  name: "quickstart-pipeline"
  identifier: "quickstart_pipeline"
  stages:
    - stage:
        name: "Build Stage"
        identifier: "build"
        type: "CI"
        spec:
          infrastructure:
            type: "KubernetesDirect"
          execution:
            steps:
              - step:
                  name: "Checkout"
                  identifier: "checkout"
                  type: "GitClone"
              - step:
                  name: "Docker Build & Push"
                  identifier: "docker_build"
                  type: "BuildAndPushDocker"
    - stage:
        name: "Deploy Stage"
        identifier: "deploy"
        type: "CD"
        spec:
          service: "my-app-service"
          environment: "dev-environment"
          execution:
            steps:
              - step:
                  name: "K8s Deploy"
                  identifier: "k8s_deploy"
                  type: "K8sApply"

7.5 效果验证

运行成功后,你应该能看到:

  • ✅ CI阶段:代码成功构建为Docker镜像并推送到仓库
  • ✅ CD阶段:镜像成功部署到目标Kubernetes集群
  • ✅ 部署后健康检查通过

通过Harness的可视化界面,你可以清楚看到整个流程的每个环节耗时、日志输出、以及部署后应用的运行状态。

八、总结与展望

回顾全文,我们深度解析了Harness平台的六个核心维度:

  1. 演进与定位:Harness是软件交付平台的"第三代",以AI原生架构重新定义了软件交付的边界。
  2. 竞品对比:Harness vs Jenkins/GitLab CI/GitHub Actions------各有千秋,但Harness在企业级治理、AI能力和平台广度上独树一帜。
  3. 模块全景:从CI/CD到Feature Flags、CCM、SRM、GitOps、IDP、STO,八大模块覆盖SDLC的全流程。
  4. AI原生架构:AIDA智能助手与知识图谱的设计,将AI能力从"辅助工具"升级为"平台基础设施"。
  5. 部署形态:SaaS、Self-Managed、Community三驾马车,满足从个人到企业级的不同需求。
  6. 实战入门:5分钟创建第一条流水线,亲身体验Harness的核心价值。

Harness的下一步是什么?

根据Harness 2026年的产品路线图,以下几点值得关注:

  • AI能力的持续深化:从辅助诊断进一步延伸到自主修复和智能编排
  • Windows部署的大幅增强:重点解决企业Windows环境的性能与可扩展性问题,包括Windows会话复用和多主机动态目标部署
  • AI速度悖论的持续破解:AI生成的代码越来越多,Harness需要让交付管道匹配甚至超过AI编码的速度

最后,回到开篇的问题:当AI会写代码,谁来"驾驭"这匹野马? 答案已经清晰------一个AI原生、覆盖全生命周期、能够与AI编码助手协同工作的现代化软件交付平台。无论你最终是否选择Harness,"AI原生"都将是下一代软件交付平台的必选项。


延伸阅读

版权声明:本文为CSDN博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

相关推荐
sali-tec1 小时前
C# 基于OpenCv的视觉工作流-章82-毛刺检测
图像处理·人工智能·opencv·算法·计算机视觉
我爱cope1 小时前
【Agent智能体18 | 构建AI工作流的技巧-评估】
人工智能·语言模型·职场和发展
marsh02061 小时前
59 openclaw与边缘计算:低延迟分布式计算方案
人工智能·ai·边缘计算·技术美术
雪隐1 小时前
个人电脑玩AI01-让5060 Ti给你打工——Whisper语音识别篇(上)
人工智能·后端
词元Max1 小时前
4.4 sklearn实战:鸢尾花分类与房价预测
人工智能·分类·sklearn
imDwAaY1 小时前
机器学习入门:从感知机到逻辑回归,理解线性分类器与Softmax CS188 Note20 学习笔记
人工智能·笔记·python·学习·机器学习·逻辑回归
无负今日_tq1 小时前
【无标题】
人工智能·深度学习·条纹
郑洁文1 小时前
基于CNN的异常流量监测系统的设计与实现
人工智能·神经网络·网络安全·cnn
爱吃肉的鹏1 小时前
基于深度学习的电缆异常检测
人工智能·深度学习