持续集成平台搭建:Jenkins,SonarQube

首先介绍一下技术:

持续集成工具:Jenkins

代码托管:svn或者Git

构建工具:Maven或者Gradle

审查工具:SonarQube

发布容器:Tomcat或者Docker

其次是系统配置信息以及一些额外要求:

(1)OS内核需要高于linux5.3,

(2)推荐运行内存为8G左右,至少需要大于4G

(3)需要分配额外的用户和用户组来运行代码审查工具

(4)若需持久化代码审查记录,需要提供一个数据库(mysql,H2,postgresql等),数据库的安装过程在此跳过

 

(一)下载配置Jenkins

Jenkins的安装方式有许多种,本文主要以war包方式启动,其他方式请参考https://jenkins.io/download/

将下载好的war包直接放入tomcat的webapp目录下,启动tomcat即可,tomcat的安装方法不再详述

此时查看tomcat的catalina日志,注意留意Jenkins的初始密码会在此输出。

启动完成后访问网址http://localhost:8080/jenkins,这时会进行初始化jenkins的一些配置,建议选择自动安装系统推荐的插件包。

创建用户时,需要提供jenkins的初始密码,在tomcat的启动日志中可以找到。

最后配置完成后,你应该能看到这个画面

 

 

(二)SonarQube的下载和安装

(1)首先去SonarQube的官网下载SonarQube包,目前最新版本为7.0,而我们则选择较稳定的LTS版本6.7.2

下载完成后,unzip解压,我的解压路径为/web/sonarqube-6.7.2,同时新增一个用户和用户组(SonarQube不能以ROOT用户运行):

#创建一个名为sonarqube的用户组和一个用户名为sonarqube密码为sonarqube的用户

groupadd sonarqube

useradd sonarqube -g sonarqube -p sonarqube

#为该用户分配文件夹权限

chown -R sonarqube:sonarqube /web/sonarqube-6.7.2

(2)之后,编辑sonar.properties文档,修改一些属性

vim /web/sonarqube-6.7.2/conf/sonar.properties

#设置jvm使用的内存大小,Xms最小使用内存,Xmx最大使用内存,可以根据实际情况自行设置,我目前的系统运行内存为8G

sonar.web.javaOpts=-server -Xms1G -Xmx1G -XX:+HeapDumpOnOutOfMemoryError

#配置持久化数据库的账户密码

sonar.jdbc.username=sonar

sonar.jdbc.password=Sonar6.2

#配置url,我此处使用的mysql

sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false

 

#下面设定访问网址为 http://centos:9000/sonar
sonar.web.host=0.0.0.0
sonar.web.port=9000

 

sonar.web.context=/sonar

(3)配置启动参数

vim /web/sonarqube-6.7.2/bin/linux-86-64(此处根据系统内存自行选择)/sonar.sh

修改RUN_AS_USER=sonarqube

即我们之前创建的用户

(4)启动sonarqube

#先切换到sonarqube用户

su sonarqube

#执行启动命令

cd /web/sonarqube-6.7.2/bin/linux-86-64/

sh sonar.sh start

附sonar启动命令:

sh sonar.sh start #启动sonar

sh sonar.sh stop #安全停止sonar

sh sonar.sh console #控制台启动sonar

#查看日志

cd ../../logs

日志分为sonar.log,es.log,web.log,若不明原因启动失败,可依次查看这几个日志。

启动后,若日志文件均无报错,即可访问http://localhost:9000/sonar,若顺利,则会出现如下界面

点击login in,输入初始账户密码admin/admin即可。

若始终无法访问,建议检查防火墙设置

 

(三)Jenkins集成Sonar

(1)在Jenkins中下载sonar插件,目前插件为 SonarQube Scanner for Jenkins

安装完成后,在 系统管理->系统设置中,找到SonarQube servers模块,填写服务器信息:

 

其中认证token需要登陆sonar后,点击Administrator->security->user,点击token按钮,输入key后再点击generate进行生成

(2)在jenkins中新建一个自由风格项目

源码管理这里不再详述,选择svn或者git都可以,不过git要记得在github上设置好webhook

触发器也不再此详述,git的话,勾选GitHub hook trigger for GITScm polling选项,则每次有push操作,都将触发构建。

构建环境,建议勾选Delete workspace before build starts选项

<1>构建,如果使用gradle进行构建,需要先在 系统管理->全局工具配置中,配置好gradle的安装位置,若系统中没有安装,建议勾选自动安装,name随意输入,maven构建同理。

gradle构建,选择invoke gradle,同时在高级选项中,输入task命令clean build -x test

maven构建,在Goals and options处输入命令clean compile package -Dmaven.test.skip=true,

<2>执行代码分析,新增一个构建步骤,选择Execute SonarQube Scanner,选择你的jdk版本,若没有,请在全局工具配置中配置好jdk位置。再选择好sonarqube scanner的版本。

之后,在Analysis properties处,输入sonar的检查参数,

#项目key (随意输入,必填项)
sonar.projectKey=2017-12-19-job

#项目名称和版本(必填项)
sonar.projectName=cuimi-job
sonar.projectVersion=1.0

#源码位置(必填项,相对于jenkins的workspace路径,例如,我此时的绝对路径为~/.jenkins/workspace/Test/test-webapp/src/main/java)
sonar.sources=test-webapp/src/main/java

#编译后的class位置(必填项,旧版本此项可不填,建议还是填入,相对路径同上)

sonar.java.binaries=test-webapp/target/classes

 

后面jvm的启动参数项,可以参考GC优化策略。新手略过

(3)配置容器并发布项目

这里有两种方案

<1>通过ssh将构建完成后的Artifacts 发送至目标服务器上,交由其他运维人员处理。

<2>通过tomcat的remote deploy功能远程发布项目

方案一:安装jenkins插件publish over ssh。安装完成后在"系统管理"->"系统设置"中,配置Publish over ssh的相关信息,

注意:插件默认使用22端口进行连接,请确保目标服务器22端口的畅通性。

配置完成后,点击Test Configuration,测试连接是否成功。

之后,在项目设置中,新增构建后操作,如图所示

配置完成后,直接保存修改即可。

注意,这里的source files和exec command是二选一的,即可以传文件,或者在目标服务器上执行shell脚本。但是不能同时两者都执行。

 

配置完成后,点击构建。构建成功后即可在sonar地址中登陆访问进行查看代码扫描情况

  • 4
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值