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

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

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 运行:

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对比其他工具
image.png
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核心概念
image.png
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 方式(推荐):

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 项目为例):

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 扫描步骤:

groovy
pipeline {
     
agent any
  stages{
   
    stage('SonarQube Analysis') {
   
      steps{
   
        withSonarQubeEnv('SonarQube-Server'){
   
          sh'mvn clean verify sonar:sonar'
        }
      }
    }
  }
}

1.2.8对比其他工具
image.png
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)查看主目录是否正确,如下图所示。
image.png

查看Jenkins主目录

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

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

image.png
配置Jenkins URL和系统 管理员邮件地址信息


image.png
配置JDK信息


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为高级设置,如下图所示。

image.png
配置Maven信息
image.png
Manage Plugins


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”文件中相应部分更改:

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)在命令行中输入:

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

image.png
登录SonarQube


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

js root@ubuntu:/home/jerry#gedit /etc/sysctl.conf
2)将vm.max_map_count设置为26144,fs.file-max设置为65536:

js vm.max_map_count=262144 fs.file-max=65536
3)将SonarQube文件拷贝到/opt/目录下,创建sonar用户:
js 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”文件
js 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:

js 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的目录结构如表所示。
image.png
2.3.5配置中文版本

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

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

image.png
Chinese Pack中文界面

目录
相关文章
|
7天前
|
人工智能 运维 安全
|
5天前
|
人工智能 异构计算
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
|
6天前
|
机器学习/深度学习 人工智能 自然语言处理
B站开源IndexTTS2,用极致表现力颠覆听觉体验
在语音合成技术不断演进的背景下,早期版本的IndexTTS虽然在多场景应用中展现出良好的表现,但在情感表达的细腻度与时长控制的精准性方面仍存在提升空间。为了解决这些问题,并进一步推动零样本语音合成在实际场景中的落地能力,B站语音团队对模型架构与训练策略进行了深度优化,推出了全新一代语音合成模型——IndexTTS2 。
604 21
|
12天前
|
人工智能 JavaScript 测试技术
Qwen3-Coder入门教程|10分钟搞定安装配置
Qwen3-Coder 挑战赛简介:无论你是编程小白还是办公达人,都能通过本教程快速上手 Qwen-Code CLI,利用 AI 轻松实现代码编写、文档处理等任务。内容涵盖 API 配置、CLI 安装及多种实用案例,助你提升效率,体验智能编码的乐趣。
969 110
|
6天前
|
人工智能 测试技术 API
智能体(AI Agent)搭建全攻略:从概念到实践的终极指南
在人工智能浪潮中,智能体(AI Agent)正成为变革性技术。它们具备自主决策、环境感知、任务执行等能力,广泛应用于日常任务与商业流程。本文详解智能体概念、架构及七步搭建指南,助你打造专属智能体,迎接智能自动化新时代。