如何借助Jenkins参数化构建将SonarQube结果输出至两台不同服务器?
实现方案:通过参数化构建让Jenkins向多SonarQube服务器推送独立分析结果
当然可以!结合Jenkins的参数化构建能力和SonarQube Scanner的配置灵活性,完全能实现让每个独立Jenkins构建对应一个SonarQube服务器的分析输出。下面是具体的分步实现指南:
1. 配置Jenkins参数化构建
- 打开目标Jenkins项目的「配置」页面,找到「参数化构建过程」选项并勾选
- 添加一个字符串参数,建议命名为
SONAR_SERVER_ID,参数描述可以写“指定要推送分析结果的SonarQube服务器ID” - 可以给参数设置「可选值」(比如
sonar-prod-01、sonar-test-02),这样触发构建时能快速选择目标服务器
2. 在Jenkins中配置多SonarQube服务器
- 进入Jenkins的「系统管理」→「系统配置」,找到「SonarQube servers」区域
- 点击「添加SonarQube」,分别配置两个目标服务器的信息:
- 给每个服务器设置唯一的「服务器ID」(要和上面参数的可选值完全匹配,比如
sonar-prod-01对应生产服务器,sonar-test-02对应测试服务器) - 填入对应服务器的URL、认证令牌等必要信息,保存配置
- 给每个服务器设置唯一的「服务器ID」(要和上面参数的可选值完全匹配,比如
3. 修改构建步骤中的Sonar分析配置
自由风格项目配置
- 在构建步骤中添加「Execute SonarQube Scanner」
- 在「SonarQube installations」下拉框中选择
${SONAR_SERVER_ID}(直接引用参数化变量) - 按需配置Sonar项目键、名称等其他参数,这些也可以做成参数化变量,进一步提升灵活性
Pipeline项目配置
如果用Pipeline脚本,示例代码如下:
pipeline { agent any parameters { string( name: 'SONAR_SERVER_ID', defaultValue: 'sonar-prod-01', description: '选择要推送分析结果的SonarQube服务器ID' ) string( name: 'SONAR_PROJECT_KEY', defaultValue: 'my-app-project', description: 'SonarQube项目标识键' ) } stages { stage('代码编译与预处理') { steps { // 这里添加你的编译、打包等前置步骤 sh 'mvn clean package -DskipTests' } } stage('SonarQube分析推送') { steps { withSonarQubeEnv(installationName: "${SONAR_SERVER_ID}") { sh 'mvn sonar:sonar -Dsonar.projectKey=${SONAR_PROJECT_KEY}' } } } } }
4. 触发并验证独立构建
- 回到项目主页,点击「Build with Parameters」,选择对应的
SONAR_SERVER_ID值后触发构建 - 每个参数不同的构建都会生成独立的构建记录,你可以在Jenkins构建历史中清晰区分
- 登录对应的SonarQube服务器,就能看到该构建推送的专属分析报告
额外小贴士
- 可以在构建步骤中设置自定义构建名称,比如通过
BUILD_DISPLAY_NAME="Sonar分析-${SONAR_SERVER_ID}",让构建历史更直观 - 如果需要批量触发两个服务器的构建,可以结合Jenkins的「构建触发器」或者编写简单的脚本自动触发两次不同参数的构建
内容的提问来源于stack exchange,提问作者Bharathi Jebamalar
相关产品推荐
相关产品推荐

