欢迎光临
我们一直在努力

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

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

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

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

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

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

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

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

  • Harness Engineering(驾驭工程) :继Prompt Engineering和Context Engineering之后的第三级AI工程范式,核心理念是“人类掌舵,AI执行”。
  • 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 对比矩阵

    维度HarnessJenkinsGitLab CIGitHub 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(简化版)

    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平台的六个核心维度:

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

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

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

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


    延伸阅读:

    • Harness Official Website
    • Harness Developer Hub
    • Why Harness AI Uses a Knowledge Graph
    • Harness Q1 2026 Product Update
    • Harness Internal Developer Portal Overview

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

    赞(0)
    未经允许不得转载:171主机测评 » 【Harness:落地实战】23、从CI/CD到AI原生底座:Harness平台全景深度解析——现代软件交付的最终答案?
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址