首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java、Python、C++支持jenkins和SonarQube(一)

Java、Python、C++支持jenkins和SonarQube(一)

作者头像
顾翔
发布2025-08-15 10:20:07
发布2025-08-15 10:20:07
34200
代码可运行
举报
运行总次数:0
代码可运行

1 Jenkins和SonarQube介绍

1.1 Jenkins介绍

Jenkins 是一个开源的 持续集成(CI)和持续交付(CD) 工具,用于自动化构建、测试和部署软件项目。它基于 Java 开发,支持跨平台运行,并拥有丰富的插件生态系统,可以灵活地扩展功能。

1.1.1核心功能

1.持续集成(CI)

o自动触发代码构建和测试,确保每次代码提交后快速发现错误。

o支持与 Git、SVN 等版本控制系统集成。

2.持续交付/部署(CD)

o自动化部署到测试、预发布或生产环境。

o支持 Docker、Kubernetes、云平台(AWS、Azure 等)。

3.任务调度

o定时执行任务(如夜间构建)。

o支持手动触发或通过 Webhook(如 GitHub Push 事件)触发。

4.丰富的插件生态

o超过 1,500 个插件,支持代码质量分析(SonarQube)、通知(Slack/Email)、构建工具(Maven/Gradle)等。

5.分布式构建

o通过主从(Master-Agent)架构在多台机器上并行执行任务,加速构建过程。

6.流水线(Pipeline)

o使用 Groovy 语法编写复杂的多阶段流程(构建→测试→部署)。

o支持声明式(Declarative)和脚本式(Scripted)语法。

1.1.2核心概念

oJob(任务):定义一个自动化流程(如构建项目)。

oPipeline(流水线):将多个任务串联成完整的 CI/CD 流程。

oNode(节点):执行任务的机器(主节点或代理节点)。

oWorkspace(工作空间):任务执行时的本地目录。

o插件(Plugin):扩展 Jenkins 功能的附加组件。

1.1.3优势

o开源免费:社区活跃,企业可低成本使用。

o跨平台:支持 Windows、Linux、macOS。

o高度可扩展:通过插件适应不同技术栈(Java、Python、Node.js 等)。

o可视化界面:提供详细的构建日志和测试报告。

1.1.4典型应用场景

o开发阶段:代码提交后自动运行单元测试。

o测试阶段:部署到测试环境并执行自动化测试(Selenium)。

o发布阶段:生成可执行包并发布到生产环境。

o监控阶段:集成 Prometheus 监控构建健康状态。

1.1.5快速入门

1.安装

o下载 Jenkins WAR 包或使用 Docker 运行:

代码语言:javascript
代码运行次数:0
运行
复制
bash
java -jar jenkins.war -Dfile.encoding=utf-8 --httpPort=8090

由于jenkins默认是8080,容易与Tomcat冲突,这里改为8090

2.初始化

o访问http://localhost:8090,按向导完成配置。

3.创建第一个任务

o新建一个自由风格(Freestyle)任务或 Pipeline 任务。

1.1.6对比其他工具

工具

特点

Jenkins

插件多、灵活,适合复杂场景

GitLab CI

与 GitLab 深度集成,配置简单

CircleCI

云原生,适合 SaaS 环境

Travis CI

开源友好,适合 GitHub 项目

1.1.7总结

Jenkins 是 DevOps 的核心工具之一,尤其适合需要高度自定义 CI/CD 流程的团队。虽然配置稍复杂,但其强大的功能和社区支持使其成为企业级自动化部署的首选。

1.2SonarQube介绍

1.2.1 SonarQube 介绍

SonarQube是一个开源的代码质量管理平台,用于持续检测代码中的 ** bugs(缺陷)、漏洞(Vulnerabilities)和代码异味(Code Smells)**。它支持多种编程语言,帮助开发团队提高代码质量,确保符合最佳实践和安全标准。

1.2.2核心功能

1.静态代码分析(Static Code Analysis)

o无需运行代码,直接扫描源代码,发现潜在问题。

o支持30+ 种语言(Java、Python、C#、JavaScript、Go 等)。

2.问题分类

oBugs(缺陷):可能导致运行时错误的代码(如空指针异常)。

oVulnerabilities(漏洞):安全风险(如 SQL 注入、硬编码密码)。

oCode Smells(代码异味):可维护性问题(如重复代码、过长方法)。

3.质量门(Quality Gate)

o定义代码质量阈值(如覆盖率 ≥80%、零严重漏洞),未达标则阻止部署。

4.技术债务管理

o量化代码问题修复所需时间,帮助团队优化技术债。

5.与 CI/CD 集成

o支持Jenkins、GitLab CI、Azure DevOps等,在流水线中自动执行扫描。

6.多维度报告

o提供可视化仪表盘,展示代码覆盖率、重复率、复杂度等指标。

1.2.3核心概念

术语

说明

Project(项目)

被分析的代码库(如一个 Git 仓库)。

Quality Profile(质量配置)

定义代码规则(如使用 SonarWay 默认规则或自定义规则)。

Quality Gate(质量门)

通过/失败标准(如“零严重漏洞”才能合并代码)。

Issue(问题)

扫描出的具体问题(Bug、漏洞或代码异味)。

Technical Debt(技术债务)

修复所有问题所需的预估时间。

1.2.4优势

多语言支持:覆盖主流编程语言和框架。 ✅深度安全检测:集成 OWASP Top 10、CWE 等安全标准。 ✅DevOps 友好:与 Jenkins、GitHub Actions 等无缝集成。 ✅历史趋势分析:跟踪代码质量随时间的变化。 ✅开源版免费:社区版支持基础功能,企业版提供高级特性(如 LDAP 认证)。

1.2.5典型工作流程

1.开发阶段:开发者在本地或 CI 中运行 SonarQube 扫描。

2.代码审查:通过 PR/MR 检查 SonarQube 报告,确保新代码符合质量标准。

3.质量门拦截:如果未达标(如存在严重漏洞),CI 流水线自动失败。

4.修复问题:团队根据优先级修复问题,降低技术债务。

1.2.6快速入门

1安装 SonarQube

·Docker 方式(推荐)

代码语言:javascript
代码运行次数:0
运行
复制
bash
docker run -d --name sonarqube -p 9000:9000 sonarqube:lts-community
#windows下运行%SONAR_HOME%\bin\windows-x86-64\
StartSonar.bat

·访问http://localhost:9000,默认账号:admin/admin。

2. 扫描代码

·使用 SonarScanner(以 Java 项目为例):

代码语言:javascript
代码运行次数:0
运行
复制
bash
sonar-scanner \  
-Dsonar.projectKey=my-project \  
-Dsonar.sources=.\ 
-Dsonar.host.url=http://localhost:9000\ 
-Dsonar.login=your-token
3. 查看报告

在 SonarQube 网页端查看分析结果: https://docs.sonarqube.org/latest/images/server-home-page.png

1.2.7与 Jenkins 集成示例

在 Jenkins Pipeline 中添加 SonarQube 扫描步骤:

代码语言:javascript
代码运行次数:0
运行
复制
groovy
pipeline {  
agent any
  stages{
    stage('SonarQube Analysis') {
      steps{
        withSonarQubeEnv('SonarQube-Server'){
          sh'mvn clean verify sonar:sonar'
        }
      }
    }
  }
}

1.2.8对比其他工具

工具

特点

SonarQube

全面静态分析,支持多语言,企业级功能

ESLint/SonarJS

仅限 JavaScript/TypeScript

Checkstyle

仅检查代码风格(如 Java)

Coverity

商业工具,侧重安全漏洞

1.2.9总结

SonarQube 是提升代码质量和安全性的关键工具,尤其适合长期维护的项目。通过自动化扫描 + 质量门控,它能有效减少技术债务,帮助团队交付更可靠的软件。

2 Jenkins的安装

持续集成是DevOps很重要的工作,而Jenkins是持续集成使用最广泛的工具。在单元测试中,本地代码测试就绪后,需要把代码库(比如GitHub)中的代码检出到本地,测试没有问题后才可以再把代码检入到代码库中,从而保证代码库中的代码质量。这个工作可以由Jenkins工具来完成。本节介绍Jenkins的安装和基本配置。

2.1 Jenkins安装

1)最新版本的Jenkins(本书使用的版本为V2.382)需要在Java 11环境中使用(Java8将被抛弃),关于如何在Windows下创建多个JDK环境,参见本书第7.3.1节的介绍。

2)下载jenkins.war包。

3)在环境配置变量中配置%JENKINS_HOME%。(在Windows环境下,%JENKINS_HOME%默认在C:\Users\\.jenkins目录下;在Linux环境下,%JENKINS_HOME%默认在/root/.jenkins目录下)。

4)在jenkins.war文件目录下,通过命令“java -jar jenkins.war”启动Jenkins。

5)启动后,打开浏览器,输入“http://127.0.0.1:8080”。

6)将“%JENKINS_HOME%\secrets\initialAdminPassword”中的初始化密码填入到网页中。

7)按照提示安装所建议的插件。

2.2 Jenkins基本配置

1)打开Jenkins主界面,选择菜单“Manage Jenkins→Configure System”。

2)查看主目录是否正确,如下图所示。

查看Jenkins主目录

3)配置Jenkins URL和系统管理员邮件地址,如图4-67所示。

4)选择菜单“Manage Jenkins→Global Tool Configuration”配置JDK信息,如2下图所示,注意不要选择“Install automatically”。

5)选择菜单“Manage Jenkins→Global Tool Configuration”配置Maven信息,如下图所示。

  • mvn-3.8.6:Maven的名称,使用时,配置信息必须与此一致。
  • C:\apache\apache-maven-3.8.6:Maven的主目录。

6)选择菜单“Manage Jenkins→Manage Plugins”进入插件管理。其中,Updates为需要更新的插件,Available plugins为可以安装的插件,Installed plugins为已经安装的插件,Advanced settings为高级设置,如下图所示。

8)“Advanced settings”的“Deploy Plugin”为安装插件的高级设置,选择相应的插件.hpi文件,单击【Deploy】按钮,即可安装,如图4-71所示。

2.3 在Jenkins中建立项目

在Jenkins中,有多种方式创建项目,本文尽量通过流水线的方式来创建,因为通过这种方式可以把配置方法作为一个文件进行交流,更便于开展DevOps工作。

3.SonarQube的安装

3.1 安装PostgreSQL

安装Linux版本的PostgreSQL或Windows版本的PostgreSQL。如果是Windows版本的PostgreSQL,建立Sonar数据库。

3.2 安装SonarQube

3.2.1Windows下安装SonarQube

1)将“%SONAQUBE_HONE%\conf\sonar.properties”文件中相应部分更改:

代码语言:javascript
代码运行次数:0
运行
复制
sonar.jdbc.url=jdbc:postgresql://localhost:5432/sonar?currentSchema=publicsonar.jdbc.username=postgressonar.jdbc.password=123456

其中,sonar.jdbc.username=postgres与sonar.jdbc.password=123456分别为PostgreSQL的登录名和密码。

2)在命令行中输入:

代码语言:javascript
代码运行次数:0
运行
复制
C:\>%SONAQUBE_HONE%\bin\windows-x86-64\StartSonar.bat

3)通过浏览器打开“http://192.168.0.123:9000”(192.168.0.123为SonarQube所在的主机IP地址),用admin/admin登录,如图示。注意:登录后需要修改密码(密码需要大小写字母,数字与特殊字符的组合)。

登录SonarQube

3.2.2.Linux下安装SonarQube

1)编辑/etc/sysctl.conf”文件,配置如下参数:

代码语言:javascript
代码运行次数:0
运行
复制
root@ubuntu:/home/jerry#gedit /etc/sysctl.conf

2)将vm.max_map_count设置为26144,fs.file-max设置为65536:

代码语言:javascript
代码运行次数:0
运行
复制
vm.max_map_count=262144
fs.file-max=65536

3)将SonarQube文件拷贝到/opt/目录下,创建sonar用户:

代码语言:javascript
代码运行次数:0
运行
复制
root@ubuntu:/opt#sysctl -p
root@ubuntu:/opt #useradd sonar
root@ubuntu:/opt#passwd sonar Enter new UNIX password://输入sonar用户的密码
Retype new UNIX password: //再次输入sonar用户的密码
passwd:password updated successfully
root@ubuntu:/opt#chown -R sonar:sonar /opt/sonarqube-9.6.1.59531/

4)编辑“/%SONARQUBE_HOME%/conf/sonar.properties”文件

代码语言:javascript
代码运行次数:0
运行
复制
sonar.jdbc.url=jdbc:postgresql://localhost:5432/sonar?currentSchema=public
sonar.jdbc.username=sonar
sonar.jdbc.password=123456

其中

  • jdbc:postgresql://localhost:5432/sonar?currentSchema=public中的sonar为数据库名。
  • sonar.jdbc.username=sonar中的sonar为sonar用户名。
  • sonar.jdbc.password=123456中的123456为上一步设置的sonar用户名的密码。4)配置/etc/security/limits.conf:

5)用sonar用户登录,启动SonarQube:

代码语言:javascript
代码运行次数:0
运行
复制
root@ubuntu:/home/jerry#su sonar
sonar@ubuntu:/home/jerry#ulimit -Hn
sonar@ubuntu:/#/%SONARQUBE_HOME%/bin/linux-x86-64/sonar.sh console

注意:在Linux中,SonarQube不可以用root用户启动。

6)通过浏览器打开“http://192.168.0.123:9000”(192.168.0.123为SonarQube所在的主机IP地址),用admin/admin登录,如图7-28所示,登录后需要修改密码。

2.3.3 SonarQube的目录结构

SonarQube的目录结构如表所示。

SonarQube的目录结构

一级目录

二级目录

三级目录

含义

%SONARQUBE_HOME%

\extensions

\plugins

SonarQube的插件目录

\jdbc-driver

JDBC的插件目录

\bin

\linux-x86-64

Linux下的启动目录

\macosx-universal-64

Mac下的启动目录

\windows-x86-64

Windows下的启动目录

\conf

配置目录

\logs

日志目录

\lib

系统库目录

\web

Web目录

2.3.5配置中文版本

首先通过SonarQube菜单“配置→应用市场”安装Chinese Pack,然后将下载的jar包放在%SONARQUBE_HOME%\extensions\plugins目录下,重新启动SonarQube。

这时,重新登录SonarQube后,界面会变为中文,再进入“配置→应用市场”界面,如图所示。

Chinese Pack中文界面

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-08-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.1 Jenkins介绍
    • 1.1.1核心功能
    • 1.1.2核心概念
    • 1.1.3优势
    • 1.1.4典型应用场景
    • 1.1.5快速入门
    • 1.1.6对比其他工具
    • 1.1.7总结
  • 1.2SonarQube介绍
    • 1.2.1 SonarQube 介绍
    • 1.2.2核心功能
    • 1.2.3核心概念
    • 1.2.4优势
    • 1.2.5典型工作流程
    • 1.2.6快速入门
    • 1.2.7与 Jenkins 集成示例
    • 1.2.8对比其他工具
    • 1.2.9总结
  • 2 Jenkins的安装
    • 2.1 Jenkins安装
    • 2.2 Jenkins基本配置
    • 2.3 在Jenkins中建立项目
  • 3.SonarQube的安装
    • 3.1 安装PostgreSQL
    • 3.2 安装SonarQube
      • 3.2.1Windows下安装SonarQube
      • 3.2.2.Linux下安装SonarQube
      • 2.3.3 SonarQube的目录结构
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档