You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从另一个Jenkins任务触发Sonar任务时鉴权失败如何解决?

报错原因

当前API请求未携带身份认证信息,被Jenkins识别为匿名用户访问,而匿名用户缺少Jenkins全局Read权限及目标任务的构建权限,因此触发拦截。

解决步骤
  • 优先使用Jenkins内置任务触发逻辑:如果是在第一个Jenkins任务的流水线中调用第二个Sonar任务,无需手动调用HTTP API,直接使用内置build步骤即可,该步骤会自动复用当前任务的执行身份完成认证,无需额外配置API Token,示例用法:
    build job: 'DPNew/xyz', 
          parameters: [
            string(name: 'FROM_HASH', value: '195c8df91791768f3098ce260eb2dd8728'),
            string(name: 'REPO_NAME', value: '_python'),
            string(name: 'PROJECT_KEY', value: '~abc'),
            string(name: 'EMAIL', value: 'abc@gmail.com'),
            string(name: 'FROM_BRANCH_NAME', value: 'feature/DO-451'),
            string(name: 'TO_BRANCH_NAME', value: 'Port-2.7'),
            string(name: 'PR_ID', value: '622')
          ],
          wait: false // 不需要等待第二个任务执行完成可设为false,需要同步等待执行结果则设为true
    
  • 若必须手动调用API,需要在请求中携带身份认证信息,有两种实现方式:
    1. 把用户名和API Token拼接在URL前缀中,修改后的请求格式如下,需替换为你自己的Jenkins用户名和生成的API Token:
      https://<Jenkins用户名>:<API Token>@jenkins.com/job/DPNew/job/xyz/buildWithParameters?token=DW&FROM_HASH=195c8df91791768f3098ce260eb2dd8728&REPO_NAME=_python&PROJECT_KEY=%7Eabc&EMAIL=abc@gmail.com&FROM_BRANCH_NAME=feature%2FDO-451&TO_BRANCH_NAME=Port-2.7&PR_ID=622
    2. 在请求头中携带Basic认证信息,将用户名:API Token的字符串做Base64编码后,添加如下请求头即可,该方式安全性更高,推荐在脚本中使用:
      Authorization: Basic <Base64编码后的字符串>
  • 权限校验:确认你使用的Jenkins账号已分配全局Read权限,以及目标任务DPNew/xyz的构建权限,避免权限不足导致调用失败。
  • 回写逻辑校验:确认Sonar任务执行完成后,已配置将报告地址和结果回写到Bitbucket对应PR的逻辑,保证Bitbucket UI可以正常展示构建结果和Sonar报告入口。

内容的提问来源于stack exchange,提问作者Abhishek Patil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 14:06:05