前端analysis | 知其所以然

jenkins mcp agent integrate

2026-01-07

可以,而且必须用「本地 MCP + 本地 Agent + 内网事件」模式
任何“上传代码给 Agent / LLM”的方案都是错的

现在这一步,只需要做到:

1
2
3
4
5
6
7
Jenkins
↓(事件 + 本地路径)
MCP(只读本地代码/数据)
↓(Facts JSON)
Agent(规则判断)
↓(Decision JSON)
Jenkins(执行/展示)

整个过程中:

  • ❌ 代码不出内网
  • ❌ 不上传到第三方
  • ❌ Agent / MCP 都不持久化代码
  • ✅ 只在本地文件系统读

二、现在“没打通”的真实原因(非常关键)

我可以非常肯定地说,现在卡在 这 3 个点之一

  1. Jenkins 不知道怎么“把上下文交给 MCP”
  2. MCP 输出的东西 Agent 不敢用 / 不知道怎么用
  3. Agent 的输出 Jenkins 不知道怎么接

👉 这不是技术难,是接口契约没钉死


三、先把“最小可跑闭环”定义清楚(解卡核心)

🎯 最小目标(今天/明天就能跑)

一次 Jenkins 构建 →
Agent 给出一个 WARN / PASS →
Jenkins 打印出来

不追求完美,只追求


四、最小闭环架构(强烈推荐照抄)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[Jenkins Job]
|
| 1. build event + workspace path
v
[MCP Runner] (本地进程)
|
| 2. read-only scan
v
[mcp_facts.json]
|
| 3. facts input
v
[Agent Runner] (本地进程)
|
| 4. decision.json
v
[Jenkins]

注意:

  • MCP、Agent 都是 Jenkins 同一台机器 / 同一内网
  • 没有 HTTP、没有外传、没有上传

五、关键点 1:Jenkins → MCP(怎么传,不传代码)

❌ 错误方式

  • Jenkins 把 diff 内容传给 MCP
  • Jenkins 把文件内容塞进 JSON

✅ 正确方式(公司安全能过)

只传“路径 + commit 信息”

Jenkinsfile 示例

1
2
3
4
5
6
7
8
9
10
11
stage("Collect Quality Facts") {
steps {
sh """
./mcp_runner \
--workspace ${WORKSPACE} \
--base origin/main \
--head HEAD \
--out mcp_facts.json
"""
}
}

✔️ MCP 在本地 WORKSPACE 里读
✔️ 代码从没“离开过磁盘”


六、关键点 2:MCP → Agent(唯一正确的数据形态)

现在 最容易出错的地方就在这

MCP 只能输出:Facts(事实)

mcp_facts.json(示例)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{
"facts": [
{
"domain": "code",
"type": "change",
"data": {
"filesChanged": 8,
"linesAdded": 312
}
},
{
"domain": "sonar",
"type": "quality",
"data": {
"criticalBugs": 1,
"codeSmellsDelta": 14
}
}
],
"meta": {
"project": "order-service",
"buildId": "jenkins-789"
}
}

❗ MCP 到这里就停

  • 不判断
  • 不打分
  • 不给建议

七、关键点 3:Agent → Jenkins(Agent 不“控制” Jenkins)

Agent 只输出一个文件

1
2
3
4
5
6
7
8
9
10
11
{
"decision": "WARN",
"reasons": [
"新增 Critical Bug",
"代码变更较大但测试变更不足"
],
"suggestedActions": [
"补充异常路径测试",
"拆分提交"
]
}

Jenkins 决定怎么用

1
2
3
4
5
6
7
8
9
10
11
stage("Quality Decision") {
steps {
script {
def d = readJSON file: 'decision.json'
echo "Quality Decision: ${d.decision}"
if (d.decision == "BLOCK") {
error "Quality Gate Failed"
}
}
}
}

✔️ 控制权在 Jenkins
✔️ Agent 只是“参谋”


八、为什么这套方案“安全部门一定能过”

从安全角度逐条对齐:

安全关注 对应设计
代码外传 ❌ 不存在
第三方依赖 ❌ 无
数据留存 Facts 可脱敏
操作权限 只读
可审计 JSON 文件

甚至可以对外这样说:

“Agent 和 MCP 就是本地脚本 + 规则引擎,没有任何外部通信能力。”


九、现在立刻能做的 3 个“解卡动作”

✅ 动作 1(最重要)

先别做服务、别做 HTTP
👉 MCP / Agent 先做成 CLI 程序


✅ 动作 2

固定 2 个文件名:

  • mcp_facts.json
  • decision.json

别玩花的。


✅ 动作 3

Agent 先只写 3 条规则

1
2
3
if criticalBug > 0 → WARN
if filesChanged > 10 → WARN
else PASS

十、现在处在一个“非常正确的位置”

现在这一步,其实是:

在做“企业级 AI 系统是否可控”的生死线设计

很多团队在这一步翻车,没有。


使用支付宝打赏
使用微信打赏

若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏