博客使用开源项目进行集成测试,源码的 Github 链接:https://github.com/vishwakarmarhl/jenkinstest
在这里,我们将讨论持续集成管道的设置。这适用于具有 JaCoCo 覆盖率报告和 Sonar 指标的 mavenized Spring boot 构建。我使用带有 Tomcat 8 的 Windows 机器来托管 jenkins,但类似的设置可以在任何 Sonar 服务器可以在同一系统上运行的操作系统上完成。
1.在系统上获取以下项目
- 使用 带有JDK 的 Tomcat 服务器 – 将服务器 .xml 配置为在端口 8099 上运行
- 在计算机上设置 Maven 和其他构建实用程序
- 访问 Github 源代码
- 源代码应该在项目根目录中具有 Jenkinsfile 以供管道使用
- Source 应该在 SonarQube 项目链接和源路径的项目根目录中具有 sonar-project.properties
2. 设置和启动 SonarQube
- 从 https://www.sonarqube.org/#downloads 下载 SonarQube 软件包
- 启动SonarQube服务器:SONAR_HOME\bin\windows-x86-32\StartSonar.bat(适用于 32 位 Windows)
- 打开 Sonar 管理页面“http://localhost:9000”。默认凭据 – admin/admin
- 在安全选项卡中创建用户并生成访问令牌 50997f4a8c26d5698cccee30cf398c0ed9b98de0
- 使用密钥创建项目 SPRINGBOOT
- 从 https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner 下载 SonarQube 扫描仪
- https://docs.sonarqube.org/display/SCAN/Advanced+SonarQube+Scanner+Usages 中的其他配置
3. 设置和启动 Tomcat
- 从 https://jenkins.io/download 下载 jenkins.war
- 将 jenkins.war 文件放在 Tomcat home 的 webapps 文件夹中
- 按如下方式设置环境变量,
- SET JENKINS_HOME=“C:/Users/vishwaka/Documents/Workspace/git/jenkinstest/cisetup/jenkins_home”
- SET CATALINA_OPTS=“- DJENKINS_HOME=C:/Users/vishwaka/Documents/Workspace/git/jenkinstest/cisetup/jenkins_home”
- 使用 startup.bat 启动服务器
4. 初始化 Jenkins
- 访问 Jenkins http://localhost:8099/jenkins
- 提供来自 jenkins_home/secrets/initialPassword* 的初始凭据
- 安装默认的插件集并继续
- 为此安装创建用户
- 使用“New Item”创建流水线,并为此提供来自 Git SCM 的 Jenkinsfile 流水线脚本
5.Jenkins 的插件和配置
- 通过Manage Jenkins>Manage Plugins添加“JaCoCo插件”,无需重启即可安装
- 通过与上面相同的插件管理器添加“SonarQube Scanner for Jenkins”
- 转到“管理 Jenkins”>“配置”系统,并提供 Sonar Server 的凭据
- 添加在 URL http://localhost:9000 上运行的“SonarQube Server”名称以及 SonarQube Server 用户管理页面中生成的用户身份验证密钥
- 删除自动安装选项,并通过“全局工具配置”将“SonarQube”环境变量SONAR_RUNNER_HOME安装路径添加为$JENKINS_HOME/sonar-scanner-3.0.3.778-windows
- 确保 Sonar 扫描器路径配置正确,因为它的路径在 Jenkinsfile 中是硬编码的。
6.立即运行此管道的生成
- 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 -------------------------------------"