从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"实际上有双重含义:
- 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 对比矩阵
| 维度 | 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平台的六个核心维度:
- 演进与定位: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版权协议,转载请附上原文出处链接及本声明。