Dify集成Jenkins API可自动触发测试并实时追踪构建状态。需配置矩阵权限、创建API Token、禁用CSRF保护,通过HTTP工具调用build接口获取Location,再轮询queue/item和build/api/json直至building为false,最后解析consoleText或Blue Ocean日志定位失败原因。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

在Dify中集成Jenkins API,可让低代码编排的AI工作流自动触发测试任务并实时获取构建状态,避免手动点击Jenkins界面或维护额外调度服务。
配置Jenkins API访问凭证
进入Jenkins系统管理→全局安全配置→启用“基于矩阵的权限控制”,勾选“匿名用户”的“Overall/Read”权限(仅调试阶段临时开启,生产环境必须关闭)。
创建专用API Token:登录Jenkins → 用户首页 → “Configure” → “API Token” → 点击“Add token”,名称填dify-trigger,复制生成的Token值。
【Jenkins必须开启CSRF保护豁免】:若使用POST触发构建,需在Jenkins启动参数中添加-Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true,否则Dify调用会返回403错误。
在Dify中创建HTTP请求工具函数
进入Dify工作区→工具→新建工具→选择“HTTP请求”类型。
填写基础信息:工具名称填“Jenkins Trigger & Poll”,描述写“触发Jenkins Job并轮询构建状态”。
设置请求参数:URL模板填{{jenkins_url}}/job/{{job_name}}/build,方法选POST,认证方式选“Basic Auth”,用户名填Jenkins用户名,密码填上一步复制的API Token。
添加必要Header:Content-Type: application/x-www-form-urlencoded;若Job含参数,还需加Crumb: {{crumb}}(该字段需先通过GET /crumbIssuer/api/json 获取)。
构建状态追踪逻辑链
第一步:调用Jenkins Trigger工具,传入jenkins_url、job_name、token,获取响应头中的Location字段值(格式如https://jenkins.example.com/queue/item/123/)。
第二步:从Location中提取队列ID(如123),拼接为{{jenkins_url}}/queue/item/{{queue_id}}/api/json,发起GET请求轮询排队状态。
第三步:当响应中executable字段不为空时,提取其中url(如https://jenkins.example.com/job/test/15/),即为实际构建地址。
第四步:对构建URL追加api/json?tree=result,timestamp,building,duration持续GET,直到building为false。此时result为SUCCESS或FAILURE即代表终态。
处理构建日志与失败归因
方法一:在构建完成且result为FAILURE时,自动调用{{build_url}}consoleText接口获取原始日志文本,截取末尾200行作为错误摘要输出给用户。
方法二:若Jenkins已安装Blue Ocean插件,可用{{build_url}}blue/rest/organizations/jenkins/pipelines/{{pipeline_name}}/runs/{{build_number}}/nodes获取结构化节点日志,定位失败阶段。
注意:consoleText接口返回纯文本,无分页,超长日志可能被Jenkins截断——需在Jenkins配置中将system.setProperty("jenkins.model.Jenkins.logSizeLimit", "10485760")设为10MB以上。


















