1. 为什么我要把 Jenkins 从浏览器里拽出来
如果你每天的工作流里都有 Jenkins,大概率经历过这套动作:打开浏览器,找到那个 Pipeline,点 Build with Parameters,填参数,提交,等页面跳转,再点进构建详情,再点 Console Output,就为了看一行日志。要是 Pipeline 里还有 input 步骤,你得盯着页面等它弹出来,手动点 Proceed。一天重复十几次,没什么技术含量,但每次都要用鼠标。
更麻烦的是,当你想让 AI Agent 帮你干活时,这套 UI 操作根本没法自动化。Agent 擅长的是跑命令、解析 stdout、根据退出码决定下一步,而不是模拟点击网页。所以我一直在找一个能让 Agent 直接操控 Jenkins 的方式,直到用上 jk 这个 Pipeline-native 的 Jenkins CLI。
jk 的核心思路很简单:以 Jenkins 的 Job URL 作为操作对象,不需要额外配置 Job 名称或服务器路径,你浏览器地址栏里的那个 URL 直接拿来用。它覆盖了查看 Pipeline 信息、触发构建、实时跟踪日志、响应 input 步骤这几个高频场景,退出码直接反映构建状态,Agent 可以用$?判断下一步怎么走。配合仓库内置的 jk-jenkins-cli skill,Agent 能知道哪些命令只读、哪些需要用户确认,比如生产环境的 input 步骤不能自动 proceed。
这篇文章我会带你走完从配置到跑通的最小闭环:先讲清楚 jk 和 TaoToken 统一 Key/API 通道怎么配合,再给出可复制的 config.toml 骨架和 settings.json 配置片段,最后用一次真实的 Pipeline 触发来验证整条链路。适合已经在用 Jenkins、想让 AI Agent 接管重复操作的同学。
2. TaoToken 前置:统一 Key 与 API 通道
在让 Agent 操控 Jenkins 之前,得先解决 Agent 本身的模型调用问题。我试过在多个工具里分别配置不同的 Key,结果就是每换一个环境都要重新填一遍,调试的时候还得翻半天记录。TaoToken 在这里的作用是提供一个统一的 Key 和 API 通道,让 jk 触发的 Agent 流程和模型调用走同一套凭证体系。
TaoToken 的官网入口是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 端点固定为 https://taotoken.net/api ,注意 API 地址不带 UTM 参数。你需要先在控制台创建一个 API Key,这个 Key 会同时用于模型对话和后续的 Agent 配置。
具体操作路径是:进入控制台后找到 API Keys 页面,新建一个 Key 并复制保存。这个 Key 的权限范围建议按最小必要原则来,如果你只是用来做 Jenkins 相关的 Agent 操作,不需要开太高的权限。创建完成后,把 Key 填到下面要讲的 config.toml 和 settings.json 里。
这里有个容易踩的坑:TaoToken 的 API 地址和官网地址是两个不同的域名,配置的时候别把官网地址填到 API base URL 里。另外 Key 一旦创建就只显示一次,记得先存到安全的地方再关页面。
3. 可复制配置:config.toml 与 settings.json
jk 本身的配置和 TaoToken 的配置是分开的两层。jk 负责和 Jenkins 通信,TaoToken 负责 Agent 的模型调用。下面给出两份可以直接复制的配置骨架。
3.1 jk 的凭证配置
jk 的凭证保存在~/.config/jk/credentials,权限 0600。你可以用命令交互式添加:
jk auth add https://jenkins.example.com按提示输入用户名和 API Token 即可。后续所有命令自动读取,不需要每次带认证参数。如果 Jenkins 用了自签名证书,可以设置SSL_CERT_FILE指向 PEM 文件,或者临时加--insecure跳过验证。
3.2 config.toml 骨架
如果你希望把 jk 的默认行为固化下来,可以在~/.config/jk/config.toml里写:
# jk 全局配置 default_server = "https://jenkins.example.com" timeout = "300s" watch_interval = "5s" # 输出格式,agent 场景建议 json,方便解析 output_format = "json" # 日志跟踪的默认行为 logs_follow = true logs_tail = 200 # 安全相关:生产环境 input 步骤默认不自动 proceed auto_proceed = false require_confirm_for_input = trueoutput_format = "json"这一项对 Agent 特别重要,因为 Agent 解析结构化输出比解析人类可读文本稳定得多。auto_proceed = false配合require_confirm_for_input = true是安全底线,生产环境的 input 步骤必须由人确认。
3.3 settings.json 配置片段
Agent 侧的 settings.json 用来告诉它怎么调用模型、怎么执行 jk 命令。下面是一个最小片段:
{ "model_provider": { "base_url": "https://taotoken.net/api", "api_key": "sk-your-taotoken-key", "model": "claude-sonnet-4-20250514" }, "tools": { "jenkins_cli": { "command": "jk", "config_path": "~/.config/jk/config.toml", "credentials_path": "~/.config/jk/credentials", "allowed_operations": [ "pipeline info", "build trigger", "build logs", "build input" ], "require_confirmation": [ "build input proceed" ] } }, "skill": { "name": "jk-jenkins-cli", "path": "~/.config/jk/skills/jk-jenkins-cli" } }把api_key换成你在 TaoToken 控制台创建的那个 Key。allowed_operations限制了 Agent 能执行的 jk 子命令,require_confirmation则强制 input proceed 这类敏感操作必须经过人工确认。skill 字段指向 jk 仓库内置的 skill 目录,Agent 会读取里面的规范来决定行为。
4. 验证请求:让 Agent 触发一次 Pipeline
配置写完之后,先别急着让 Agent 全自动跑,手动验证一遍整条链路是否通。
4.1 查看 Pipeline 信息
jk pipeline info https://jenkins.example.com/job/my-pipeline输出是 YAML 格式,包含 Job 基本信息和参数定义。确认能正常返回,说明 jk 到 Jenkins 的认证没问题。
4.2 触发构建并等待结果
jk build trigger https://jenkins.example.com/job/my-pipeline -p ENV=staging -p VERSION=1.2.0 --watch--watch会阻塞直到构建完成,退出码直接反映构建状态:0 表示 SUCCESS,1 表示 FAILURE,2 表示 UNSTABLE,3 表示 ABORTED,4 表示 PENDING_INPUT,大于等于 10 表示 jk 自身错误。Agent 可以直接用$?判断下一步怎么走。
4.3 实时跟踪日志
jk build logs -f https://jenkins.example.com/job/my-pipeline/lastBuild类似tail -f,构建运行中实时输出,构建结束自动退出。Agent 可以边跑边解析日志,遇到关键字就触发告警或重试。
4.4 响应 input 步骤
如果上一步退出码是 4,说明 Pipeline 卡在 input 步骤:
jk build input https://jenkins.example.com/job/my-pipeline/lastBuild proceed -p DEPLOY_TARGET=production这一步在 Agent 场景下必须由人确认,因为生产环境的部署确认不能交给模型自动判断。skill 里明确规定 Agent 不能自动 proceed,必须先检查 pendingInput 详情再请求用户确认。
4.5 让 Agent 串起来
把上面几条命令交给 Agent 后,它的执行逻辑大致是:先pipeline info拿到参数定义,再build trigger --watch触发并等待,根据退出码决定是继续跟踪日志还是处理 input。整个过程不需要打开浏览器,也不需要模拟点击。
5. 本篇常见错排查
5.1 认证失败 401/403
最常见的原因是 API Token 填错或者过期。jk 的凭证存在~/.config/jk/credentials,权限必须是 0600,权限不对 jk 会拒绝读取。另外确认 Jenkins 用户有对应 Job 的 Build 权限,只读用户触发构建会返回 403。
5.2 自签名证书报错
如果 Jenkins 用的是自签名证书,jk 会报 x509 错误。两种处理方式:设置SSL_CERT_FILE指向 PEM 文件,或者临时加--insecure。生产环境建议用前者,后者只适合本地调试。
5.3 退出码 4 但不知道 input 是什么
退出码 4 表示 PENDING_INPUT,但具体是哪个 input 步骤需要看详情。可以用jk build input <url> status查看 pendingInput 的详情,确认参数后再 proceed。Agent 场景下这一步必须停下来问人,不能自己猜。
5.4 TaoToken API 调用返回 404
检查base_url是不是写成了官网地址。API 端点固定为https://taotoken.net/api,不带 UTM 参数,也不带尾部斜杠。另外确认 Key 没有多余空格,复制的时候容易带上换行。
5.5 Agent 不执行 jk 命令
先确认 settings.json 里的command路径正确,jk 是否在 PATH 里。如果 Agent 报权限错误,检查allowed_operations是否包含了要执行的子命令。skill 目录路径也要确认存在,否则 Agent 不知道安全规范。
6. 把 Jenkins 操作接进 Agent 工具链
jk 不是要替代 Jenkins,而是把 Jenkins 的操作界面从浏览器搬到终端。对于每天和 Pipeline 打交道的工程师来说,少几次鼠标点击不是目的,真正的价值是让 Jenkins 操作可以进入脚本、进入 Makefile、进入 AI Agent 的工具链。
如果你想让 Agent 长期接管编码和部署流程,可以了解一下 Coding Plan,它把模型调用和工具链配置打包在一起,省去逐个环境配置的麻烦。需要先拿到 Key 的话,去 API Keys 页面创建一个,然后按本文的 config.toml 和 settings.json 骨架填进去。接入过程中遇到报错,可以对照接入文档排查,或者直接用模型对话验证 Key 是否可用。
配置完成后,建议先用一个非生产环境的 Pipeline 跑一遍完整流程:触发、等待、看日志、处理 input。确认退出码和日志解析都符合预期后,再把生产环境的 Job URL 交给 Agent。记住把require_confirm_for_input保持为 true,生产部署的确认权始终留在人手里。