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

如何通过API获取Jenkins构建中使用的SonarQube项目密钥与名称

可行,以下是几种程序化获取的方法

1. 从Jenkins构建参数/环境变量提取

如果你的Jenkins流水线是通过参数化构建传入SonarQube项目密钥、名称,或者在流水线脚本中将这些值存入了环境变量,可直接通过Jenkins REST API获取:

  • 调用构建详情API,请求格式:http://<jenkins地址>/job/<任务名>/<构建编号>/api/json
  • 可通过tree参数过滤返回字段,比如只取参数:
    curl -u <用户名>:<API令牌> "http://jenkins-url/job/my-sonar-job/100/api/json?tree=parameters[name,value]"
    
  • 解析返回的JSON,找到对应参数(比如你定义的SONAR_PROJECT_KEY、SONAR_PROJECT_NAME)的value值即可。
  • 如果是流水线脚本中设置的环境变量,可将API请求的tree参数改为envVars,获取构建的环境变量集合后提取目标值。

2. 从构建日志中匹配提取

如果SonarQube分析命令(比如sonar-scanner)在构建日志中明文输出了项目密钥和名称(例如-Dsonar.projectKey=my-project-key -Dsonar.projectName=MyProject),可通过API拉取日志后用正则匹配:

  • 拉取构建日志的API请求:http://<jenkins地址>/job/<任务名>/<构建编号>/logText/progressiveText
  • 用正则表达式匹配关键参数:
    • 匹配项目密钥:-Dsonar.projectKey=([^\s]+)
    • 匹配项目名称:-Dsonar.projectName=([^\s]+)
  • 示例curl命令结合grep提取:
    curl -u <用户名>:<API令牌> "http://jenkins-url/job/my-sonar-job/100/logText/progressiveText" | grep -oP '-Dsonar.projectKey=\K[^\s]+'
    

3. 从Jenkins SonarQube插件的构建动作中获取

如果使用了官方SonarQube Jenkins插件触发分析,插件会将SonarQube项目信息绑定到构建动作中:

  • 调用构建详情API,在返回的actions数组中查找SonarQube相关的动作对象(通常包含sonarQubeReport或类似关键字)
  • 该对象内一般会直接包含projectKey、projectName等字段,直接解析即可。

注意事项

  • 所有API调用需要使用Jenkins的用户名和API令牌进行身份验证,令牌可在Jenkins个人设置中生成。
  • 具体字段名需匹配你流水线中实际定义的参数/变量名,比如你可能用自定义的参数名而非SONAR_PROJECT_KEY,需对应调整。

内容的提问来源于stack exchange,提问作者KUSHAL MUDDANA

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 02:41:01