持续集成Jenkins+sonarqube部署教程

持续集成Jenkins+sonarqube部署教程


 

一 概述

 

     本文主要介绍jenkins,sonarQube的安装与集成,代码分析有sonarQUbe和sonar-runner构建,或者在maven项目情况下可以sonarQbude和maven的构建。介绍jenkins的编译打包部署,代码检查。最后集成jenkins

二 预装软件

 

  • 软件名称 平台 备注
  • jdk1.8.0_60 Win10 操作系统
  • apache-tomcat-8.0.20 Win10 Tomcat容器
  • Jenkins Win10 端口 8088
  • sonarqube-6.2 Win10 端口 9090
  • sonar-runner-2.6.1 Win10
  • mysql 5.6 Win10
  • nexus-3.2.0-01 Linux Maven私有服务

三 配置环境变量

   配置各软件的环境变量方法不展开描述。除nexus外,其余都在安装在本地。

 

 
持续集成Jenkins+sonarqube部署教程_第1张图片
 

四 sonarQube安装

4.1 将sonaeQbude解压到本地。

     修改sonar.properties文件.数据库使用本地的mysql,创建一个名为sonar的库。

     当sonarQube启动时候会自动创建表。

     

     建库语句

Js代码   收藏代码
  1. CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;    
   
    添加如下内容,sonar默认自带mysql驱动。
Js代码   收藏代码
  1. sonar.jdbc.username=root  
  2. sonar.jdbc.password=11111  
  3. sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true   
  4. sonar.jdbc.driverClassName=com.mysql.jdbc.Driver  

    新的sonarQbude的表相对旧版来说有了新的改动,升级时候需要把旧的表删除。否则会报以下错。

Js代码   收藏代码
  1. exception caught on transport layer [[id: 0xc7fbf08e, /127.0.0.1:55381 => /127.0.0.1:9001]], closing connection    
  2. java.io.IOException: 远程主机强迫关闭了一个现有的连接。    

 

4.2 启动sonarQube

 
   持续集成Jenkins+sonarqube部署教程_第2张图片
 

     运行“StartSonar.bat”, 访问9000端口,sonar默认自带了jetty服务器。

     默认用户名密码 admin、admin。一些设置和菜单只有在登陆之后才能看到。

     因个人9000端口有其他用途,将端口改为9090.

Java代码   收藏代码
  1. sonar.web.port=9090  

 

  4.3汉化sonarQube

 

   官网地址 http://docs.sonarqube.org/display/PLUG/Plugin+Library

    持续集成Jenkins+sonarqube部署教程_第3张图片
 

   将sonar-l10n-zh-plugin-1.13.jar放置于sonarqube-6.2\extensions\plugins下。重启sonarQube。

 soanrQube有一些需要到的插件,用于代码分析。

插件介绍

插件的下载地址为:http://docs.codehaus.org/display/SONAR/Plugin+Library

将下载后的插件上传到${SONAR_HOME}extensions\plugins目录下,重新启动sonar。

sonar默认集成了Java Ecosystem插件,该插件是一组插件的合集

(1)Java [sonar-java-plugin]:java源代码解析,计算指标等

(2)Squid [sonar-squid-java-plugin]:检查违反Sonar定义规则的代码

(3)Checkstyle [sonar-checkstyle-plugin]:使用CheckStyle检查违反统一代码编写风格的代码

(4)FindBugs [sonar-findbugs-plugin]:使用FindBugs检查违反规则的缺陷代码

(5)PMD [sonar-pmd-plugin]:使用pmd检查违反规则的代码

(6)Surefire [sonar-surefire-plugin]:使用Surefire执行单元测试

(7)Cobertura [sonar-cobertura-plugin]:使用Cobertura获取代码覆盖率

(8)JaCoCo [sonar-jacoco-plugin]:使用JaCOCO获取代码覆盖率

常用的插件:

(1)JavaScript代码检查:http://docs.codehaus.org/display/SONAR/JavaScript+Plugin

(2)Python代码检查:http://docs.codehaus.org/display/SONAR/Python+Plugin

(3)Web页面检查(HTML、JSP、JSF、Ruby、PHP等):http://docs.codehaus.org/display/SONAR/Web+Plugin

(4)xml文件检查:http://docs.codehaus.org/display/SONAR/XML+Plugin

(5)scm源码库统计分析:http://docs.codehaus.org/display/SONAR/SCM+Stats+Plugin

(6)文件度量:http://docs.codehaus.org/display/SONAR/Tab+Metrics+Plugin

(7)中文语言包:http://docs.codehaus.org/display/SONAR/Chinese+Pack

(8)时间表显示度量结果:http://docs.codehaus.org/display/SONAR/Timeline+Plugin

(9)度量结果演进图:http://docs.codehaus.org/display/SONAR/Motion+Chart+Plugin

(b)插件配置示例(本段内容来自http://www.ibm.com/developerworks/cn/java/j-lo-sonar/

 

 

五 sonar-runner安装

5.1 修改sonar-runnerc下的conf的sonar-scanner.properties配置文件

 

Java代码   收藏代码
  1. sonar.host.url=http://localhost:9090  
  2. sonar.jdbc.username=root  
  3. sonar.jdbc.password=11111  
  4. sonar.jdbc.url=jdbc:mysql://10.10.5.64:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true   
  5. sonar.jdbc.driverClassName=com.mysql.jdbc.Driver  
 

5.2  在项目的根目录下添加文件sonar-project.properties

    1 单一个项目

Java代码   收藏代码
  1. sonar.projectKey=pljj  
  2. sonar.projectName=pljj  
  3. sonar.projectVersion=1.0-SNAPSHOT  
  4. sonar.sources=src/main/java  
  5. sonar.tests=src/test/java  
  6. sonar.binaries=target/classes  
  7.   
  8. sonar.language=java  

 

  2 maven多模块

Java代码   收藏代码
  1. sonar.projectKey=pljj  
  2. sonar.projectName=pljj  
  3. sonar.projectVersion=1.0  
  4. sonar.sources=.  
  5. sonar.language=java  
  6. sonar.sourceEncoding=UTF-8  

   或者

Java代码   收藏代码
  1. sonar.projectKey=com.pljj-job  
  2. sonar.projectName=elastic-job  
  3. sonar.projectVersion=1.1.0  
  4. # Set modules IDs  
  5. sonar.modules=pljj-core,pljj-console,pljj-spring  
  6. # Modules inherit properties set at parent level  
  7. sonar.sources=src/main/java  
  8. sonar.tests=src/test/java  
  9. sonar.java.binaries=target  
  10. sonar.language=java  
 

 

 5.3,运行sonar-runner

 

    在“开始”》“运行”中输入cmd切换的项目更目录 输入“sonar-runner”

 

    以下为成功目录
    持续集成Jenkins+sonarqube部署教程_第4张图片

 

  登陆http://localhost:9090/ 查看代码扫描结果,帐号密码admin/admin

持续集成Jenkins+sonarqube部署教程_第5张图片
 

 

六   mave安装和sonarQbude配合使用

6.1在maven官网下载maven

http://maven.apache.org/download.cgi

打开cmd窗口数据 mvn –v 查看maven版本,打印如下表示安装成功。

 
持续集成Jenkins+sonarqube部署教程_第6张图片
 

 6.2 在%M2_HOME%\conf\setting.xml中输入下面内容(直接用下面的内容覆盖原文件)

 

Xml代码   收藏代码
  1. xmlversionxmlversion="1.0" encoding="UTF-8"?>  
  2. <settingsxmlnssettingsxmlns="http://maven.apache.org/SETTINGS/1.0.0"  
  3.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.           xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0http://maven.apache.org/xsd/settings-1.0.0.xsd">  
  5.     <profiles>  
  6.         <profile>  
  7.             <id>sonarid>  
  8.             <activation>  
  9.                <activeByDefault>trueactiveByDefault>  
  10.             activation>  
  11.             <properties>  
  12.                   
  13.                 <sonar.jdbc.url>  
  14.                  jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8  
  15.                 sonar.jdbc.url>  
  16.                 <sonar.jdbc.driverClassName>com.mysql.jdbc.Driversonar.jdbc.driverClassName>  
  17.                <sonar.jdbc.username>rootsonar.jdbc.username>  
  18.                <sonar.jdbc.password>11111sonar.jdbc.password>  
  19.    
  20.                   
  21.                 <sonar.host.url>http://localhost:9000sonar.host.url>  
  22.             properties>  
  23.         profile>  
  24.      profiles>  
  25. settings>  

    使用asonr-maven-plugin进行分析,在项目的pom.xml里面添加

    参考官网:

    http://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Maven

 

Xml代码   收藏代码
  1. <build>  
  2.   <pluginManagement>  
  3.     <plugins>  
  4.       <plugin>  
  5.     <groupId>org.codehaus.mojogroupId>  
  6.     <artifactId>sonar-maven-pluginartifactId>  
  7.     <version>2.7.1version>  
  8.       plugin>  
  9.     plugins>  
  10.   pluginManagement>  
  11. build>  
 

 

保存后找到你需要被sonar分析的maven项目根目录, 被分析的项目必须带有pom文件

6.3、在CMD窗口下,命令行进入到项目文件的目录中去,然后再输入mvn sonar:soanr进行测试

6.4、在浏览器中输入http://localhost:9000查看结果。

7 ,nexus安装 

nexus仓库并不是必须的,不使用私有仓库情况,不必安装。

7.1下载nexus http://www.sonatype.org/nexus/go/ 我的是linux版本

将安装包复制到需要安装的机器,我安装在/opt/soft/nexus
tar –zxvf nexus-latest-bundle.tar.gz
解压后会出现两个目录

cd nexus-2.7.7-01/bin
./nexus 
输出如下:

列出了nexus的各种命令
./nexus start 启动服务
然后在本机访问http://localhost:8081/nexus,默认用户名密码:admin,admin123

 


如果是远程机访问还需要开通8081端口,操作如下:

 

Java代码   收藏代码
  1. /sbin/iptables -I INPUT -p tcp --dport 8081 -j ACCEPT #开启8081端口   
  2. /etc/rc.d/init.d/iptables save #保存配置   
  3. /etc/rc.d/init.d/iptables restart #重启服务   
  4. 查看端口是否已经开放   
  5. /etc/init.d/iptables status  
 

7.2 项目本地pom.xml配置

 

Xml代码   收藏代码
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  3.     <modelVersion>4.0.0modelVersion>  
  4.   
  5.     <modules>  
  6.         <module>pljj-commonmodule>  
  7.         <module>pljj-coremodule>  
  8.         <module>pljj-reportmodule>  
  9.     modules>  
  10.       
  11.     <groupId>com.pljjgroupId>  
  12.     <artifactId>pljj-pomartifactId>  
  13.     <version>0.0.1-SNAPSHOTversion>  
  14.     <packaging>pompackaging>  
  15.     <name>pljj-pomname>  
  16.     <url>http://maven.apache.orgurl>  
  17.   
  18.     <properties>  
  19.         <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>  
  20.         <project.groupId>com.pljjproject.groupId>  
  21.         <project.version>0.0.1-SNAPSHOTproject.version>  
  22.         <spring.version>3.2.9.RELEASEspring.version>  
  23.         <lucene.version>3.6.2lucene.version>  
  24.         <querydsl.version>2.9.0querydsl.version>  
  25.         <jackson.version>2.0.6jackson.version>  
  26.         <shiro.version>1.2.1shiro.version>  
  27.     properties>  
  28.   
  29.     <dependencies>  
  30.           
  31.         <dependency>  
  32.             <groupId>commons-beanutilsgroupId>  
  33.             <artifactId>commons-beanutilsartifactId>  
  34.             <version>1.9.2version>  
  35.         dependency>  
  36.         <dependency>  
  37.             <groupId>org.apache.commonsgroupId>  
  38.             <artifactId>commons-lang3artifactId>  
  39.             <version>3.1version>  
  40.         dependency>  
  41.         <dependency>  
  42.             <groupId>commons-cligroupId>  
  43.             <artifactId>commons-cliartifactId>  
  44.             <version>1.2version>  
  45.         dependency>  
  46.         <dependency>  
  47.             <groupId>commons-codecgroupId>  
  48.             <artifactId>commons-codecartifactId>  
  49.             <version>1.6version>  
  50.         dependency>  
  51.         <dependency>  
  52.             <groupId>commons-iogroupId>  
  53.             <artifactId>commons-ioartifactId>  
  54.             <version>2.2version>  
  55.         dependency>  
  56.         <dependency>  
  57.             <groupId>commons-netgroupId>  
  58.             <artifactId>commons-netartifactId>  
  59.             <version>3.3version>  
  60.         dependency>  
  61.         <dependency>  
  62.             <groupId>commons-fileuploadgroupId>  
  63.             <artifactId>commons-fileuploadartifactId>  
  64.             <version>1.3.1version>  
  65.         dependency>  
  66.         <dependency>  
  67.             <groupId>commons-dbcpgroupId>  
  68.             <artifactId>commons-dbcpartifactId>  
  69.             <version>1.3version>  
  70.         dependency>  
  71.         <dependency>  
  72.             <groupId>org.apache.antgroupId>  
  73.             <artifactId>antartifactId>  
  74.             <version>1.8.4version>  
  75.         dependency>  
  76.   
  77.           
  78.         <dependency>  
  79.             <groupId>org.apache.lucenegroupId>  
  80.             <artifactId>lucene-coreartifactId>  
  81.             <version>${lucene.version}version>  
  82.         dependency>  
  83.         <dependency>  
  84.             <groupId>org.apache.lucenegroupId>  
  85.             <artifactId>lucene-analyzersartifactId>  
  86.             <version>${lucene.version}version>  
  87.         dependency>  
  88.         <dependency>  
  89.             <groupId>org.apache.lucenegroupId>  
  90.             <artifactId>lucene-highlighterartifactId>  
  91.             <version>${lucene.version}version>  
  92.         dependency>  
  93.         <dependency>  
  94.             <groupId>org.apache.lucenegroupId>  
  95.             <artifactId>lucene-memoryartifactId>  
  96.             <version>${lucene.version}version>  
  97.         dependency>  
  98.         <dependency>  
  99.             <groupId>org.apache.lucenegroupId>  
  100.             <artifactId>lucene-queriesartifactId>  
  101.             <version>${lucene.version}version>  
  102.         dependency>  
  103.   
  104.           
  105.         <dependency>  
  106.             <groupId>org.springframeworkgroupId>  
  107.             <artifactId>spring-coreartifactId>  
  108.             <version>${spring.version}version>  
  109.         dependency>  
  110.         <dependency>  
  111.             <groupId>org.springframeworkgroupId>  
  112.             <artifactId>spring-context-supportartifactId>  
  113.             <version>${spring.version}version>  
  114.         dependency>  
  115.         <dependency>  
  116.             <groupId>org.springframeworkgroupId>  
  117.             <artifactId>spring-webartifactId>  
  118.             <version>${spring.version}version>  
  119.         dependency>  
  120.         <dependency>  
  121.             <groupId>org.springframeworkgroupId>  
  122.             <artifactId>spring-webmvcartifactId>  
  123.             <version>${spring.version}version>  
  124.         dependency>  
  125.         <dependency>  
  126.             <groupId>org.springframework.datagroupId>  
  127.             <artifactId>spring-data-commons-coreartifactId>  
  128.             <version>1.4.1.RELEASEversion>  
  129.         dependency>  
  130.         <dependency>  
  131.             <groupId>org.springframework.datagroupId>  
  132.             <artifactId>spring-data-jpaartifactId>  
  133.             <version>1.2.0.RELEASEversion>  
  134.         dependency>  
  135.   
  136.         <dependency>  
  137.             <groupId>org.slf4jgroupId>  
  138.             <artifactId>slf4j-apiartifactId>  
  139.             <version>1.7.2version>  
  140.         dependency>  
  141.   
  142.         <dependency>  
  143.             <groupId>ch.qos.logbackgroupId>  
  144.             <artifactId>logback-classicartifactId>  
  145.             <version>1.0.7version>  
  146.         dependency>  
  147.         <dependency>  
  148.             <groupId>ch.qos.logbackgroupId>  
  149.             <artifactId>logback-coreartifactId>  
  150.             <version>1.0.7version>  
  151.         dependency>  
  152.   
  153.           
  154.         <dependency>  
  155.             <groupId>org.freemarkergroupId>  
  156.             <artifactId>freemarkerartifactId>  
  157.             <version>2.3.19version>  
  158.         dependency>  
  159.   
  160.           
  161.         <dependency>  
  162.             <groupId>com.mysema.querydslgroupId>  
  163.             <artifactId>querydsl-jpaartifactId>  
  164.             <version>${querydsl.version}version>  
  165.         dependency>  
  166.         <dependency>  
  167.             <groupId>com.mysema.querydslgroupId>  
  168.             <artifactId>querydsl-luceneartifactId>  
  169.             <version>${querydsl.version}version>  
  170.         dependency>  
  171.   
  172.           
  173.         <dependency>  
  174.             <groupId>org.hibernategroupId>  
  175.             <artifactId>hibernate-coreartifactId>  
  176.             <version>3.6.10.Finalversion>  
  177.         dependency>  
  178.         <dependency>  
  179.             <groupId>org.hibernategroupId>  
  180.             <artifactId>hibernate-entitymanagerartifactId>  
  181.             <version>3.6.10.Finalversion>  
  182.         dependency>  
  183.         <dependency>  
  184.             <groupId>org.hibernate.javax.persistencegroupId>  
  185.             <artifactId>hibernate-jpa-2.0-apiartifactId>  
  186.             <version>1.0.1.Finalversion>  
  187.         dependency>  
  188.         <dependency>  
  189.           <groupId>org.hibernategroupId>  
  190.           <artifactId>hibernate-validatorartifactId>  
  191.           <version>4.2.0.Finalversion>  
  192.         dependency>  
  193.   
  194.           
  195.         <dependency>  
  196.             <groupId>org.apache.shirogroupId>  
  197.             <artifactId>shiro-webartifactId>  
  198.             <version>${shiro.version}version>  
  199.         dependency>  
  200.         <dependency>  
  201.             <groupId>org.apache.shirogroupId>  
  202.             <artifactId>shiro-ehcacheartifactId>  
  203.             <version>${shiro.version}version>  
  204.         dependency>  
  205.         <dependency>  
  206.             <groupId>org.apache.shirogroupId>  
  207.             <artifactId>shiro-springartifactId>  
  208.             <version>${shiro.version}version>  
  209.         dependency>  
  210.   
  211.           
  212.         <dependency>  
  213.             <groupId>com.octo.captchagroupId>  
  214.             <artifactId>jcaptchaartifactId>  
  215.             <version>2.0-alpha-1version>  
  216.         dependency>  
  217.   
  218.           
  219.         <dependency>  
  220.             <groupId>org.imgscalrgroupId>  
  221.             <artifactId>imgscalr-libartifactId>  
  222.             <version>4.2version>  
  223.         dependency>  
  224.   
  225.           
  226.         <dependency>  
  227.             <groupId>com.jhlabsgroupId>  
  228.             <artifactId>filtersartifactId>  
  229.             <version>2.0.235version>  
  230.         dependency>  
  231.   
  232.           
  233.         <dependency>  
  234.             <groupId>com.fasterxml.jackson.coregroupId>  
  235.             <artifactId>jackson-annotationsartifactId>  
  236.             <version>${jackson.version}version>  
  237.         dependency>  
  238.         <dependency>  
  239.             <groupId>com.fasterxml.jackson.coregroupId>  
  240.             <artifactId>jackson-coreartifactId>  
  241.             <version>${jackson.version}version>  
  242.         dependency>  
  243.         <dependency>  
  244.             <groupId>com.fasterxml.jackson.coregroupId>  
  245.             <artifactId>jackson-databindartifactId>  
  246.             <version>${jackson.version}version>  
  247.         dependency>  
  248.         <dependency>  
  249.               <groupId>com.fasterxml.jackson.dataformatgroupId>  
  250.               <artifactId>jackson-dataformat-xmlartifactId>  
  251.               <version>${jackson.version}version>  
  252.         dependency>  
  253.   
  254.           
  255.         <dependency>  
  256.             <groupId>org.htmlparsergroupId>  
  257.             <artifactId>htmlparserartifactId>  
  258.             <version>1.6version>  
  259.         dependency>  
  260.   
  261.           
  262.         <dependency>  
  263.             <groupId>joda-timegroupId>  
  264.             <artifactId>joda-timeartifactId>  
  265.             <version>2.1version>  
  266.         dependency>  
  267.   
  268.         <dependency>  
  269.             <groupId>com.oraclegroupId>  
  270.             <artifactId>ojdbc14artifactId>  
  271.             <version>10.2.0.3.0version>  
  272.         dependency>  
  273.           
  274.           
  275.             <version>4.3.2version>  
  276.         dependency>  
  277.   
  278.         <dependency>  
  279.             <groupId>org.apache.httpcomponentsgroupId>  
  280.             <artifactId>httpclientartifactId>  
  281.               
  282.             <version>4.3.2version>  
  283.         dependency>  
  284.           
  285.         <dependency>  
  286.           <groupId>org.codehaus.woodstoxgroupId>  
  287.           <artifactId>stax2-apiartifactId>  
  288.           <version>4.0.0version>  
  289.         dependency>  
  290.           
  291.         <dependency>  
  292.           <groupId>org.quartz-schedulergroupId>  
  293.           <artifactId>quartzartifactId>  
  294.           <version>2.1.7version>  
  295.         dependency>  
  296.   
  297.         <dependency>  
  298.               <groupId>junitgroupId>  
  299.               <artifactId>junitartifactId>  
  300.               <version>3.8.1version>  
  301.               <scope>testscope>  
  302.             dependency>  
  303.     dependencies>  
  304. <distributionManagement>  
  305.   <repository>  
  306.       <id>nexusid>  
  307.       <name>Releasesname>  
  308.       <url>http://私服ip:8081/repository/maven-releasesurl>  
  309.     repository>  
  310.     <snapshotRepository>  
  311.       <id>nexusid>  
  312.       <name>Snapshotname>  
  313.       <url>http://私服ip:8081/repository/maven-snapshotsurl>  
  314.     snapshotRepository>  
  315.   distributionManagement>  
  316.     <build>    
  317.       <defaultGoal>compiledefaultGoal>  
  318.     <finalName>pagefinalName>  
  319.         <plugins>    
  320.          <plugin>   
  321.             <groupId>org.apache.maven.pluginsgroupId>   
  322.             <artifactId>maven-surefire-pluginartifactId>    
  323.              <version>2.6version>    
  324.             <configuration>    
  325.                 <skip>trueskip>    
  326.             configuration>   
  327.         plugin>  
  328.             <plugin>    
  329.                 <groupId>org.apache.maven.pluginsgroupId>    
  330.                 <artifactId>maven-compiler-pluginartifactId>    
  331.                 <version>2.1version>    
  332.                 <configuration>    
  333.                     <source>1.6source>    
  334.                     <target>1.6target>    
  335.                 configuration>    
  336.             plugin>    
  337.         plugins>    
  338.     build>  
  339. project>  

 

 

 

7.3 maven配置,修改conf下的setting.xml 

 

Xml代码   收藏代码
  1. <settings>  
  2.   
  3.   <pluginGroups>  
  4.     <pluginGroup>org.sonatype.pluginspluginGroup>  
  5.   pluginGroups>  
  6.   
  7.  <servers>  
  8.     <server>  
  9.       <id>nexusid>  
  10.       <username>adminusername>  
  11.       <password>admin123password>  
  12.     server>  
  13.   servers>  
  14.   
  15. <mirrors>  
  16.     <mirror>  
  17.       <id>nexusid>  
  18.       <mirrorOf>*mirrorOf>  
  19.       <url>http://私服ip:8081/repository/maven-public/url>  
  20.     mirror>  
  21.     <mirror>    
  22.       <id>repo2id>    
  23.       <mirrorOf>centralmirrorOf>    
  24.       <name>Human Readable Name for this Mirror.name>    
  25.       <url>http://repo2.maven.org/maven2/url>    
  26.     mirror>  
  27.   
  28.   mirrors>  
  29.   
  30. <profiles>  
  31. <profile>  
  32.       <id>nexusid>  
  33.       <repositories>  
  34.         <repository>  
  35.           <id>centralid>  
  36.           <url>http://私服ip:8081/repository/maven-centralurl>  
  37.           <releases><enabled>trueenabled>releases>  
  38.           <snapshots><enabled>trueenabled>snapshots>  
  39.         repository>  
  40.       repositories>  
  41.      <pluginRepositories>  
  42.         <pluginRepository>  
  43.           <id>centralid>  
  44.           <url>http://私服ip:8081/repository/maven-centralurl>  
  45.           <releases><enabled>trueenabled>releases>  
  46.           <snapshots><enabled>trueenabled>snapshots>  
  47.         pluginRepository>  
  48.       pluginRepositories>  
  49.     profile>  
  50.   profiles>  
  51.   <activeProfiles>  
  52.     <activeProfile>nexusactiveProfile>  
  53.   activeProfiles>  
  54. settings>  
 

 

然后执行mvn clean deploy

 

八 jenkins,sonar和 maven集成

8.1 jenkins安装

 

1,Jenkins的默认工作间在C:\Users\xxxxxx.jenkins,修改工作空为间D:\jenkins,只需要添加环境变量
JENKINS_HOME=D:\jenkins

2,从jenkins官网下载jenkins:https://wiki.jenkins-ci.org/display/JENKINS/Meet+Jenkins点击“download jenkins.war”

下载的为jenkins.zip将其更改为jenkins.war包,有两种运行方式
a. 运行 java -jar jenkins.war,采用内置jetty服务器。

b. 将下载的war包文件部署到 servlet 容器,然后启动容器(推荐这种方式)。
用浏览器打开http://localhost:8080/ jenkins,访问Jenkins主页。

 

 

8.2 修改jenkins配置

为了让jenkins可以在构建项目的时候执行sonar,所以我们需要在jenkins上安装插件 。

同时为了可以使用svn,maven,email也同样需要安装插件。

持续集成Jenkins+sonarqube部署教程_第7张图片

 

现在就可以进行配置,让jenkins和sonar结合在一起。这样我们构建项目的时候就会进行代码检测

持续集成Jenkins+sonarqube部署教程_第8张图片

 

 

 

1,系统设置

 

1)全局属性 -Tool Locations


持续集成Jenkins+sonarqube部署教程_第9张图片
2) SonarQube servers

 


持续集成Jenkins+sonarqube部署教程_第10张图片
 

 

 

3) Jenkins Location


持续集成Jenkins+sonarqube部署教程_第11张图片

 

 

3) Extended E-mail Notification

 

 邮件配置中的密码均为,邮件的takens,直接stmp的端口,还是回不能成功,连接不到,改为ssl,端口为465。成功发送邮件。

 参考  https://zhuanlan.zhihu.com/p/22810691。

 

 
持续集成Jenkins+sonarqube部署教程_第12张图片
 
持续集成Jenkins+sonarqube部署教程_第13张图片
 

4) 邮件通知

可以通过这个功能测试邮件是否可以正常使用。

用户名不带@163.com,使用ssl,465端口。在不勾选情况下,使用smtp的25端口发送失败。

 

 
持续集成Jenkins+sonarqube部署教程_第14张图片
 

 

 

2 Global Tool Configuration

 

 

点击“系统管理”页面,点击Global Tool Configuration。

 

持续集成Jenkins+sonarqube部署教程_第15张图片

 

增加jdk,maven,sonar-runner等环境地址。如jdk,点击新增,去掉【自动安装】的勾选。

 


持续集成Jenkins+sonarqube部署教程_第16张图片


持续集成Jenkins+sonarqube部署教程_第17张图片
 

配完后点击保存。

 

 

7.4 构建一个自由风格的项目

 

 
 持续集成Jenkins+sonarqube部署教程_第18张图片

 

 1)增加svn的url和需要密码验证是后输入帐号密码

 


持续集成Jenkins+sonarqube部署教程_第19张图片
 


 2)构建触发器,3分钟触发一次
 
   持续集成Jenkins+sonarqube部署教程_第20张图片


3)构建 编辑我们的项目,选择最下放。找到构建 

持续集成Jenkins+sonarqube部署教程_第21张图片

  1. Not authorized. Please check the properties sonar.login and sonar.password.  

  持续集成Jenkins+sonarqube部署教程_第22张图片




4)sonarQbude必须把sonar-project.properties的内容粘贴进来。否则构建时候,会报异常,

 
持续集成Jenkins+sonarqube部署教程_第23张图片
 

 

 

 

5)构建后操作.增加一个邮件通知的管理。

 

转载自:

https://zhuanlan.zhihu.com/p/22810691

进入到具体的某一job中配置邮件通知


持续集成Jenkins+sonarqube部署教程_第24张图片

 

选择html
 
持续集成Jenkins+sonarqube部署教程_第25张图片

 

 

点击“add trigger”选择awyas

 
持续集成Jenkins+sonarqube部署教程_第26张图片

 

 


 
持续集成Jenkins+sonarqube部署教程_第27张图片

 

Html代码   收藏代码
  1. <hr/>  
  2. (本邮件是程序自动下发的,请勿回复!)<br/><hr/>  
  3. 项目名称:$PROJECT_NAME<br/><hr/>  
  4. 构建编号:test_$BUILD_NUMBER<br/><hr/>  
  5. svn版本号:${SVN_REVISION}<br/><hr/>  
  6. 构建状态:$BUILD_STATUS<br/><hr/>  
  7. 触发原因:${CAUSE}<br/><hr/>  
  8. 构建日志地址:<a href="${BUILD_URL}console">${BUILD_URL}consolea><br/><hr/>  
  9. 构建地址:<a href="$BUILD_URL">$BUILD_URLa><br/><hr/>  
  10. 变更集:${JELLY_SCRIPT,template="html"}<br/><hr/>  

 

 

将构建日志压缩作为附件也添加到邮件当中发送,需要注意的是,每一次构建都会产生一个报告文档,仓库里会包含有之前构建的所有的报告文档,
所以需要打包的是当前这次产生的报告文档,不是之前的构建产生的文档点击应用“apply”,然后保存

八 构建项目

 

填写完毕后,我们点击保存 
持续集成Jenkins+sonarqube部署教程_第28张图片

 

 

 点击开始构建,则开始构建job,点击sonarQbude可以查看分析的结果。点击具体的构建记录可以看到

构建的日志。

Build History的#50,#49可以看到构建的日志。

 
持续集成Jenkins+sonarqube部署教程_第29张图片
 
持续集成Jenkins+sonarqube部署教程_第30张图片
 
持续集成Jenkins+sonarqube部署教程_第31张图片
 

你可能感兴趣的:(移动端测试)