SonarQube令牌过期后,Jenkins更新凭证仍无法授权求助
排查SonarQube令牌更新后Jenkins仍未授权的问题
可能遗漏的关键步骤:
- 检查Jenkins任务级别的凭证配置:如果你的Jenkins任务(流水线/自由风格)单独配置了SonarQube凭证,仅更新全局系统配置不会生效。需进入对应任务的配置页面,找到SonarQube分析相关设置,确认选择的是新创建的Secret Text凭证。
- 验证SonarQube令牌的权限:新生成的令牌所属用户必须拥有对应项目的**Execute Analysis(分析执行)和Browse(浏览)**权限。进入SonarQube的项目设置→权限页面,检查该用户是否被分配了正确的权限组(比如默认sonar-users组是否包含所需权限,或单独给用户添加权限)。
- 确认Jenkins系统配置的凭证关联:在Jenkins「系统管理」→「系统配置」→「SonarQube servers」中,选中对应的SonarQube服务器,检查「Server authentication token」下拉框是否确实选择了新创建的凭证,避免误选未删除的旧凭证。
- 清理Jenkins缓存:Jenkins可能缓存旧凭证信息,尝试重启Jenkins服务,或在「系统管理」→「脚本控制台」执行以下代码查看当前生效的凭证,确认新令牌已正确加载:
CredentialsProvider.lookupCredentials(SecretTextCredentials.class, Jenkins.get(), ACL.SYSTEM, Collections.emptyList()) - 检查SonarScanner的参数传递:如果使用Jenkinsfile流水线脚本调用SonarScanner,需确认脚本是否硬编码了旧令牌,或引用的凭证ID与新创建的一致。比如
withSonarQubeEnv('SonarQubeServer')配置,要确保对应的服务器配置关联的是新凭证;若直接传递sonar.token参数,需确认参数值是新令牌的正确引用。 - 验证令牌本身的有效性:在本地用curl测试令牌能否正常访问SonarQube API,示例命令:
返回正常项目列表说明令牌有效;若返回401,则是SonarQube端的令牌生成或权限配置有问题。curl -u <你的新令牌>: https://<你的SonarQube地址>/api/projects/search
报错信息参考:
INFO: Default locale: "en_US", source code encoding: "windows-1252" (analysis is platform dependent) INFO: Load global settings INFO: ------------------------------------------------------------------------ INFO: EXECUTION FAILURE INFO: ------------------------------------------------------------------------ INFO: Total time: 0.968s INFO: Final Memory: 5M/56M INFO: ------------------------------------------------------------------------ ERROR: Error during SonarScanner execution ERROR: Not authorized. Please check the user token in the property 'sonar.token' or the credentials in the properties 'sonar.login' and 'sonar.password'.
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

