1、服务器
IP:
192.168.58.115
2、软件包下载
jdk-8u181-linux-x64.tar.gz
sonarqube-7.5.zip
sonar-l10n-zh-plugin-1.25-SNAPSHOT.jar
http://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v8.5.37/bin/apache-tomcat-8.5.37.zip
http://archives.jenkins-ci.org/war-stable/2.150.1/jenkins.war
https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.2.0.1227-linux.zip
3、安装配置
3.1、配置jdk
# pwd
/data/packages
# ll
total 272400
-rw-r----- 1 jkuser jkuser 10246390 Mar 5 16:24 apache-tomcat-8.5.37.zip
-rw-r----- 1 jkuser jkuser 185646832 Mar 5 16:24 jdk-8u181-linux-x64.tar.gz
-rw-r----- 1 jkuser jkuser 74297875 Mar 5 16:25 jenkins.war
# tar -zxf jdk-8u181-linux-x64.tar.gz -C /usr/local
# cd /usr/local
# ln -s jdk1.8.0_181 jdk
# vi /etc/profile
JAVA_HOME=/usr/local/jdk
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
# source /etc/profile
# java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
3.2、配置tomcat
# cd /data
# mkdir webApps
# chown jkuser:jkuser /data/webApps
# su jkuser
$ cd packages/
$ unzip apache-tomcat-8.5.37.zip -d /data/webApps
$ cd /data/webApps/
$ ln -s apache-tomcat-8.5.37 tomcat
$ cd /data/webApps/tomcat/bin
$ chmod +x *.sh
$ catalina.sh version
Using CATALINA_BASE: /data/webApps/tomcat
Using CATALINA_HOME: /data/webApps/tomcat
Using CATALINA_TMPDIR: /data/webApps/tomcat/temp
Using JRE_HOME: /usr/local/jdk
Using CLASSPATH: /data/webApps/tomcat/bin/bootstrap.jar:/data/webApps/tomcat/bin/tomcat-juli.jar
Server version: Apache Tomcat/8.5.37
Server built: Dec 12 2018 12:07:02 UTC
Server number: 8.5.37.0
OS Name: Linux
OS Version: 3.10.0-693.21.1.el7.x86_64
Architecture: amd64
JVM Version: 1.8.0_181-b13
JVM Vendor: Oracle Corporation
$ vi /data/webApps/tomcat/conf/server.xml
Connector port="8080" URIEncoding="UTF-8"
$ vi /data/webApps/tomcat/conf/tomcat-users.xml
$ mkdir /data/webApps/tomcat/webapps
$ cp /data/packages/jenkins.war /data/webApps/tomcat/webapps
3.3、进入jenkins页面配置账号密码
通过下面的链接可以访问jenkins页面
http://192.168.58.115:8080/jenkins
$ cat /data/webApps/tomcat/webapps/jenkins/secrets/initialAdminPassword
c703afade6354435bf9bdd6d2767d810
把上边查到的字符串填入页面中--跳过插件安装--设置账号密码
账号admin
密码jenkinsadmin
3.4、sonar安装配置
首先安装数据库,记得数据库版本要高于5.6,不然启动sonar会报错。
# tar -xf mysql-5.7.18-1.el7.x86_64.rpm-bundle.tar
# rpm -qa | grep postfix
postfix-2.10.1-6.el7.x86_64
# rpm -qa | grep mariadb
mariadb-libs-5.5.60-1.el7_5.x86_64
# yum remove postfix-2.10.1-6.el7.x86_64
# yum remove mariadb-libs-5.5.60-1.el7_5.x86_64
# rpm -ivh mysql-community-common-5.7.18-1.el7.x86_64.rpm
# rpm -ivh mysql-community-libs-5.7.18-1.el7.x86_64.rpm
# rpm -ivh mysql-community-client-5.7.18-1.el7.x86_64.rpm
# rpm -ivh mysql-community-server-5.7.18-1.el7.x86_64.rpm
# systemctl enable mysqld.service
# systemctl start mysqld.service
为sonar创建数据库
# mysql -uroot -p
> set password for root@localhost = password('devroot');
MariaDB [(none)]> CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> CREATE USER 'sonar' IDENTIFIED BY 'sonar';
Query OK, 0 rows affected (0.01 sec)
MariaDB [(none)]> GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> FLUSH PRIVILEGES;
# cd /data/packages
# unzip sonarqube-7.5.zip -d /usr/local
# ln -s sonarqube-7.5 sonar
# chown -R jkuser:jkuser /usr/local/sonarqube-7.5
# unzip sonar-scanner-cli-3.2.0.1227-linux.zip
# chown -R jkuser:jkuser /usr/local/sonar-scanner-3.2.0.1227-linux
# mv sonar-scanner-3.2.0.1227-linux /usr/local/sonar
# vi /etc/profile
JAVA_HOME=/usr/local/jdk
CATALINA_BASE=/data/webApps/tomcat
JENKINS_HOME=$CATALINA_BASE/webapps/jenkins
SONAR_RUNNER_HOME=/usr/local/sonarqube-7.5/sonar-scanner-3.2.0.1227-linux
export JAVA_HOME CATALINA_BASE JENKINS_HOME SONAR_RUNNER_HOME PATH
PATH=$JAVA_HOME/bin:$CATALINA_BASE/bin:$SONAR_RUNNER_HOME/bin:$PATH
export SONAR_HOME=/usr/local/sonarqube-7.5
# source /etc/profile
# su jkuser
配置sonar
$ vi /usr/local/sonar/conf/sonar.properties
sonar.web.port=9000
sonar.search.port=9001
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
$ vi /usr/local/sonar/conf/wrapper.conf
wrapper.java.command=/usr/local/jdk/bin/java
优化
# vi /etc/sysctl.conf
vm.max_map_count = 262144
# sysctl -p
对sonar做汉化
$ cd /data/packages/
$ cp sonar-l10n-zh-plugin-1.25-SNAPSHOT.jar /usr/local/sonar/extensions/plugins/
启动sonar
$ cd /usr/local/sonar
$ ./bin/linux-x86-64/sonar.sh start
为sonar设置代理,当然如果没有防火墙的问题也可以直接通过 http://192.168.58.115:9000 访问sonar。
# yum install nginx
# vi /etc/nginx/nginx.conf
http中添加下面的配置,默认是20M
client_max_body_size 50M;
在server中做下面的修改
# listen [::]:80 default_server;
# location / {
# }
location / {
proxy_pass http://192.168.58.115:9000;
proxy_set_header Host $host;
proxy_redirect off;
proxy_cache_valid 200 302 1h;
proxy_cache_valid 301 1d;
proxy_cache_valid any 1024m;
expires 30d;
}
# systemctl enable nginx.service
# systemctl start nginx.service
浏览器访问sonarqube的页面 http://192.168.58.115
默认账号密码
账户:admin
密码:admin
3.5、jenkins插件安装
下载:
http://updates.jenkins-ci.org/download/plugins
svn和sonarqube依赖插件:
Script Security Plugin 1.50
Command Agent Launcher Plugin 1.2
bouncycastle API Plugin 2.16.3
Structs Plugin 1.9
workflow-step-api (Pipeline: Step API)2.15
workflow-scm-step (Pipeline: SCM Step)2.5
JDK Tool Plugin 1.0
JAXB plugin 2.3.0
Credentials Plugin 2.1.16
SSH Credentials Plugin 1.13
SCM API Plugin 2.2.7
workflow-api(Pipeline: API) 2.25
JUnit Plugin 1.25
MapDB API Plugin 1.0.9.0
Subversion Plug-in 2.10
jQuery plugin 1.12.4
sonar(SonarQube Plugin) 2.5
可以到jenkins网站查找插件,就可以显示该插件所依赖的插件。
可以登录管理页面通过下面方式安装插件:
登录--系统管理--管理插件--高级--上传插件(选择文件)
上面的安装插件方式比较麻烦,可以把插件放到jenkins项目的plugins目录下,重启jenkins项目就可以生效。
3.6、在jenkins管理页面中配置sonar
系统管理--系统设置--Add SonarQube,填写内容
Name SonarQube7.5
Server URL http://192.168.58.115
Server version 5.3 or higher
Server authentication token 下边是生成方式
获取token步骤:
登录sonarqube--Administration--Configuration--Security,把 Force user authentication 的对勾打上,保存。
Administration--Security--Users--Tokens,输入一个名字 sonar ,点击 Generate ,拷贝生成的token添加到到之前的jenkins管理页面sonarqube配置的 Server authentication token 选项,保存配置。
全局工具配置-- JDK installations ,填写 JDK Name 参数为 jdk1.8 ,取消自动安装,JAVA_HOME 参数为 /usr/local/jdk
全局工具配置-- SonarQube Scanner ,填写 SonarQube Scanner Name 参数为 sonar-runner-3.2 ,取消自动安装, SONAR_RUNNER_HOME 参数为 /usr/local/sonarqube-7.5/sonar-scanner-3.2.0.1227-linux
4、使用jenkins打包并上传到开发服务器上
说明:
192.168.22.177和192.168.22.178两台服务器是tomcat应用服务器,使用jenkins打好的包要自动上传到这两台服务器上,tomcat应用的启动账户为hduser。
在jenkins服务器上做免密登录tomcat应用服务器的配置
# su jkuser
$ ssh-keygen -t rsa
$ ssh-copy-id [email protected]
$ ssh-copy-id [email protected]
登录jenkins管理界面
新建任务--构建一个自由风格的软件项目--configure
Source Code Management 选项 点击 Subversion ,填入 Repository URL 参数 svn://192.168.14.65/innovation/hbaseserv ,Credentials 新建账户,填入 访问svn的账户密码,然后下拉框选中该账户
Build 选项 , 点击 Add build step 下拉框,选择“执行shell”,在 commend 框中填入下面的内容:
cd /data/webApps/tomcat/webapps/jenkins/workspace
jar -cvf hbaseserv.war hbaseserve/
scp hbaseserv.war [email protected]:/data/webApp/war_pacakage
scp hbaseserv.war [email protected]:/data/webApp/war_pacakage
解释下上边的shell:
对从svn拉下来的代码进行打包,之后把打好的包传到对应的项目服务器上。
如果需要在上传完包之后自动更新应用,则需要添加更新应用的shell命令。
配置 Additional arguments 参数为 -X
之后保存配置,点击 立即构建 ,等待构建完成后在应用服务器上就可以看到打好的包。
5、使用sonar分析代码
新建任务--构建一个自由风格的软件项目--configure
Source Code Management 选项 点击 Subversion ,填入 Repository URL 参数 svn://192.168.14.65/innovation/hbaseserv ,Credentials 新建账户(如果有账户的话就不用新建了),填入 访问svn的账户密码,然后下拉框选中该账户
Build 选项 , 点击 Add build step 下拉框,点击 Execute Sonarqube Scanner ,JDK 参数 选择 jdk1.8,Analysis properties 参数 如下所示:
sonar.projectKey=hbaseserve_java
soanr.projectName=hbaseserve_java
sonar.sources=/data/webApps/tomcat/webapps/jenkins/workspace /hbaseserve
sonar.java.binaries=/data/webApps/tomcat/webapps/jenkins/workspace/hbaseserve/src
sonar.binaries=bin
sonar.language=java
sonar.sourcrEncoding=UTF-8
Additional arguments 参数 -X
之后保存配置,点击 立即构建 ,等待构建完成后,在sonarqube管理页面就可以看到分析后的结果
参考:
https://blog.csdn.net/qq_26886929/article/details/54864439
https://blog.csdn.net/j15221024030/article/details/49781769
https://blog.csdn.net/zh520qx/article/details/55669142
https://blog.csdn.net/yangwenjianywj/article/details/82771309
https://www.cnblogs.com/zndxall/p/9336879.html