Jenkins Pipeline中与JaCoCo,Nexus 和 SonarQube 进行持续集成

2022-11-30 2,620 0

博客使用开源项目进行集成测试,源码的 Github 链接:https://github.com/vishwakarmarhl/jenkinstest

在这里,我们将讨论持续集成管道的设置。这适用于具有 JaCoCo 覆盖率报告和 Sonar 指标的 mavenized Spring boot 构建。我使用带有 Tomcat 8 的 Windows 机器来托管 jenkins,但类似的设置可以在任何 Sonar 服务器可以在同一系统上运行的操作系统上完成。

1.在系统上获取以下项目

  1. 使用 带有JDK 的 Tomcat 服务器 – 将服务器 .xml 配置为在端口 8099 上运行
  2. 在计算机上设置 Maven 和其他构建实用程序
  3. 访问 Github 源代码
  4. 源代码应该在项目根目录中具有 Jenkinsfile 以供管道使用
  5. Source 应该在 SonarQube 项目链接和源路径的项目根目录中具有 sonar-project.properties

2. 设置和启动 SonarQube

  1. 从 https://www.sonarqube.org/#downloads 下载 SonarQube 软件包
  2. 启动SonarQube服务器:SONAR_HOME\bin\windows-x86-32\StartSonar.bat(适用于 32 位 Windows)
  3. 打开 Sonar 管理页面“http://localhost:9000”。默认凭据 – admin/admin
  4. 在安全选项卡中创建用户并生成访问令牌 50997f4a8c26d5698cccee30cf398c0ed9b98de0
  5. 使用密钥创建项目 SPRINGBOOT
  6. 从 https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner 下载 SonarQube 扫描仪
  7. https://docs.sonarqube.org/display/SCAN/Advanced+SonarQube+Scanner+Usages 中的其他配置

3. 设置和启动 Tomcat

  1. 从 https://jenkins.io/download 下载 jenkins.war
  2. 将 jenkins.war 文件放在 Tomcat home 的 webapps 文件夹中
  3. 按如下方式设置环境变量,
  4. SET JENKINS_HOME=“C:/Users/vishwaka/Documents/Workspace/git/jenkinstest/cisetup/jenkins_home”
  5. SET CATALINA_OPTS=“-  DJENKINS_HOME=C:/Users/vishwaka/Documents/Workspace/git/jenkinstest/cisetup/jenkins_home”
  6. 使用 startup.bat 启动服务器

4. 初始化 Jenkins

  1. 访问 Jenkins http://localhost:8099/jenkins
  2. 提供来自 jenkins_home/secrets/initialPassword* 的初始凭据
  3. 安装默认的插件集并继续
  4. 为此安装创建用户
  5. 使用“New Item”创建流水线,并为此提供来自 Git SCM 的 Jenkinsfile 流水线脚本

5.Jenkins 的插件和配置

  1. 通过Manage Jenkins>Manage Plugins添加“JaCoCo插件”,无需重启即可安装
  2. 通过与上面相同的插件管理器添加“SonarQube Scanner for Jenkins”
  3. 转到“管理 Jenkins”>“配置”系统,并提供 Sonar Server 的凭据
  4. 添加在 URL http://localhost:9000 上运行的“SonarQube Server”名称以及 SonarQube Server 用户管理页面中生成的用户身份验证密钥
  5. 删除自动安装选项,并通过“全局工具配置”将“SonarQube”环境变量SONAR_RUNNER_HOME安装路径添加为$JENKINS_HOME/sonar-scanner-3.0.3.778-windows
  6. 确保 Sonar 扫描器路径配置正确,因为它的路径在 Jenkinsfile 中是硬编码的。

6.立即运行此管道的生成

  1. Pipeline处于 http://localhost:8099/jenkins/job/JENKINS-BOOT/

2. 在Pipeline报告中检出覆盖率报告

3. 您还可以查看 http://localhost:9000/dashboard?id=JENKINSBOOT SonarQube报告

4. 如果你有很多这样的项目,那么最好从父作业管道执行所有作业管道。你可以创建一个并将其称为“BUILD-ALL-JOBS”。可以使用下面的流水线脚本对其进行配置,以运行上述示例中描述的 JENKINS-BOOT 作业以及任何其他虚构的作业调用 JENKINS-BOOT-XXX。

node {
    stage('JENKINS-BOOT-STAGE-A') {
        build job: 'JENKINS-BOOT'
    }
    stage('JENKINS-BOOT-STAGE-B') {
        build job: 'JENKINS-BOOT-XXX'
    }
}

也有插件可以并行构建作业,但这取决于你要在系统中构建的工作流程。

7.最后,把所有的东西都放到一个可以运行它的脚本中

考虑到我的设置是在本地 Windows 开发工作站上的,所以参考脚本启动如下

@echo off
echo "--------------------------------------------------------------------------"
echo "------------------------- CI STARTUP SCRIPT ------------------------------"
echo "--------------------------------------------------------------------------"

echo "Startup SonarQube Server"
echo "------------------------"
START CMD /C "cd c:\Dock\ci\sonar\sonarqube-6.4\bin\windows-x86-64 & CALL StartSonar.bat"
echo "Sonar may be up on http://localhost:9000/"

echo "Startup Nexus Repository Manager"
echo "--------------------------------"
START CMD /C "cd c:\Dock\ci\nexus\nexus-3.3.1-01\bin & nexus.exe /run"
echo "Nexus may be up on http://localhost:8081/"

echo "Startup Jenkins on Tomcat"
echo "-------------------------"
START CMD /C "cd c:\Dock\ci\jenkins\apache-tomcat-8.5.15\bin & startup.bat"
echo "Jenkins may be up on http://localhost:8099/jenkins"
echo "-------------------------------- END -------------------------------------"

相关文章

Jenkins 自定义全局变量如何设置使用
Redis 主从复制如何实现?
如何查看网络的性能指标?
ping的工作原理是什么?
CPU工作原理
java内存分配理解

发布评论

Index