jenkins集成Sonar代码分析

本文介绍以docker容器方式启动postgres和sonarqube。

前提条件:
linux系统已具备docker环境,安装jenkins,jenkins已配置好git,jdk,nodejs等。
关闭防火墙(或放行5432、9000端口)

先在jenkins安装SonarQube Scanner插件

登录jenkins,系统管理,插件管理,搜索SonarQube Scanner,安装SonarQube Scanner或者SonarQube Scanner for Jenkins
在这里插入图片描述

1.安装Sonar

演示将postgres和sonarqube安装在10.144.118.57上,登录57机器执行以下步骤。

1.1.下载镜像

docker pull postgres:11.1
docker pull sonarqube:7.4-community

如下图:

在这里插入图片描述

1.2.运行容器

启动postgres

docker run -di --restart=always --name postgres -p 5432:5432 -e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=123456 postgres:11.1

启动postgres

docker run -di --restart=always --name sonarqube -p 9000:9000 --link postgres -e SONARQUBE_JDBC_URL=jdbc:postgresql://postgres:5432/sonar -e SONARQUBE_JDBC_USERNAME=sonar -e SONARQUBE_JDBC_PASSWORD=123456 sonarqube:7.4-community

映射SonarQube存储(如果需要)
-v sonarqube_conf:/opt/sonarqube/conf
-v sonarqube_extensions:/opt/sonarqube/extensions
-v sonarqube_logs:/opt/sonarqube/logs
-v sonarqube_data:/opt/sonarqube/data

1.3.查看容器运行状态

docker ps -a

在这里插入图片描述

这里由于patainer已经占用9000端口,临时将9091端口映射到9000。


1.4.登录sonarqube获取Token

浏览器访问 http://10.144.118.57:9091 ,初始使用 admin/admin 登录。

在这里插入图片描述

初始进来没有这两个项目,这是分析代码后效果图。

点击用户头像,选择My Account,输入token名称(名称可随意),点击Generate。

在这里插入图片描述

生成token,并记录,后面jenkin集成Sonarqube Servers要用!

2.jenkins中配置Sonar

2.1.配置全局凭据

登录jenkins

如果手动添加API Token为关闭状态,需要先打开,系统管理->全局安全配置->API Token,勾选【允许用户手动创建一个遗留的 API token】,保存。

点击系统管理,点击Manager Credentials

在这里插入图片描述

点击全局

在这里插入图片描述

添加凭据

在这里插入图片描述

类型:Secret text
范围:全局
Secret:sonarqube中生成的token
ID:自定义
描述:自定义

点击确定。

在这里插入图片描述

2.2.添加Sonarqube Servers

点击系统管理,系统配置

在这里插入图片描述

在SonarQube servers下,勾选Environment variables,点击Add SonarQube

Name:自定义
Server URL:http://10.144.118.57:9091(上面安装的SonarQube地址)
Server authentication token:选择2.1中配置的全局凭据

点击保存。

在这里插入图片描述

3.新建任务,测试sonar分析java后端代码

3.1.新建任务

登录jenkins,新建任务,输入任务名称,选择构建一个自由风格的软件项目,点击OK。

在这里插入图片描述

3.2.配置

源码管理

勾选Git(这里假设jenkins已经集成git,如未集成git,这里没有Git选项,请先集成git后再操作),输入项目git地址,选择用户(这里的用户也是凭据,参照2.1配置全局凭据操作,类型选择Username with password),指定分支,源码库浏览器默认自动;

在这里插入图片描述

构建

点击增加构建步骤,选择Execute SonarQube Scanner

选择jdk,
选择SonarQube Scanner(2.2中添加的),
填写Analysis properties,内容如下:

>sonar.projectKey=ib-gisedit
>sonar.projectName=ib-gisedit
>sonar.language=java
>sonar.sourceEncoding=UTF-8
>sonar.sources=$WORKSPACE/ib-gisedit/src
>sonar.java.binaries=$WORKSPACE

在这里插入图片描述

点击保存

3.3.测试代码分析

点击立即构建,即可构建项目执行代码分析,登录sonarqube界面,点击Projects即可看到分析结果,分析内容含义请自行查阅资料。

在这里插入图片描述

4.新建任务,测试sonar分析前端代码

测试sonar分析前端代码需要jenkins配置nodejs

这里以前端项目nari-globe为例,前端新建任务的步骤和测试分析java后端代码的步骤基本一致,区别在构建填写Analysis properties时

在这里插入图片描述

Analysis properties内容如下:

sonar.projectKey=nari-globe
sonar.projectName=nari-globe
sonar.sourceEncoding=UTF-8
sonar.exclusions=**/*.png,**/*.svg,**/*.md,**/*.eot,**/*.ttf,**/*.jpg,**/*.md,**/*.json
sonar.sources=$WORKSPACE

选择前端项目,执行3.3.测试代码分析,分析前端代码,登录sonarqube界面查看分析结果。

完结!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JenkinsSonarQube、Tomcat和SVN可以进行集成搭建,可以实现代码的自动构建、测试、分析和部署。下面是具体步骤: 1. 安装JenkinsSonarQube JenkinsSonarQube都可以在官网下载安装包进行安装。 2. 安装Tomcat Tomcat也可以在官网下载安装包进行安装。 3. 安装SVN SVN可以在官网下载安装包进行安装。 4. 配置Jenkins 4.1 安装插件 在Jenkins中安装以下插件: - Subversion Plugin:用于支持SVN - SonarQube Scanner for Jenkins:用于支持SonarQube 4.2 配置SVN 在Jenkins中配置SVN,在“系统管理”中选择“全局工具配置”,在“Subversion”中设置SVN的路径和账号密码。 4.3 配置Tomcat 在Jenkins中配置Tomcat,在“系统管理”中选择“全局工具配置”,在“Tomcat”中设置Tomcat的路径和账号密码。 4.4 配置SonarQubeJenkins中配置SonarQube,在“系统管理”中选择“全局工具配置”,在“SonarQube Scanner”中设置SonarQube的路径和账号密码。 4.5 创建Jenkins任务 在Jenkins中创建任务,在任务中配置SVN的地址、账号密码和代码的检出路径。在“构建后操作”中添加以下内容: - Invoke top-level Maven targets:用于构建代码 - SonarQube Scanner:用于进行代码分析并上传结果到SonarQube服务器 - Deploy war/ear to a container:用于将代码部署到Tomcat服务器中 5. 使用Jenkins进行集成搭建 在Jenkins中运行任务,Jenkins会自动进行代码的检出、构建、测试、分析和部署。如果有问题,可以在Jenkins的控制台中查看详细的日志信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值