zoukankan      html  css  js  c++  java
  • 持续集成Jenkins+sonarqube部署教程

    转载:http://pljj000.iteye.com/blog/2346739

    一 概述

         本文主要介绍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外,其余都在安装在本地。

     

     

    四 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

     
       
     

         运行“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

        
     

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

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

    插件介绍

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

    将下载后的插件上传到${SONAR_HOME}extensionsplugins目录下,重新启动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”

        以下为成功目录
        

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


     

    六   mave安装和sonarQbude配合使用

    6.1在maven官网下载maven

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

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

     

     

     6.2 在%M2_HOME%confsetting.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>sonar</id>  
    8.             <activation>  
    9.                <activeByDefault>true</activeByDefault>  
    10.             </activation>  
    11.             <properties>  
    12.                 <!-- EXAMPLE FOR MYSQL-->  
    13.                 <sonar.jdbc.url>  
    14.                  jdbc:mysql://localhost:3306/sonar?useUnicode=true&amp;characterEncoding=utf8  
    15.                 </sonar.jdbc.url>  
    16.                 <sonar.jdbc.driverClassName>com.mysql.jdbc.Driver</sonar.jdbc.driverClassName>  
    17.                <sonar.jdbc.username>root</sonar.jdbc.username>  
    18.                <sonar.jdbc.password>11111</sonar.jdbc.password>  
    19.    
    20.                 <!-- SERVER ON A REMOTE HOST-->  
    21.                 <sonar.host.url>http://localhost:9000</sonar.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.mojo</groupId>  
    6.     <artifactId>sonar-maven-plugin</artifactId>  
    7.     <version>2.7.1</version>  
    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.0</modelVersion>  
    4.   
    5.     <modules>  
    6.         <module>pljj-common</module>  
    7.         <module>pljj-core</module>  
    8.         <module>pljj-report</module>  
    9.     </modules>  
    10.       
    11.     <groupId>com.pljj</groupId>  
    12.     <artifactId>pljj-pom</artifactId>  
    13.     <version>0.0.1-SNAPSHOT</version>  
    14.     <packaging>pom</packaging>  
    15.     <name>pljj-pom</name>  
    16.     <url>http://maven.apache.org</url>  
    17.   
    18.     <properties>  
    19.         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
    20.         <project.groupId>com.pljj</project.groupId>  
    21.         <project.version>0.0.1-SNAPSHOT</project.version>  
    22.         <spring.version>3.2.9.RELEASE</spring.version>  
    23.         <lucene.version>3.6.2</lucene.version>  
    24.         <querydsl.version>2.9.0</querydsl.version>  
    25.         <jackson.version>2.0.6</jackson.version>  
    26.         <shiro.version>1.2.1</shiro.version>  
    27.     </properties>  
    28.   
    29.     <dependencies>  
    30.         <!-- dependency of apache-commons -->  
    31.         <dependency>  
    32.             <groupId>commons-beanutils</groupId>  
    33.             <artifactId>commons-beanutils</artifactId>  
    34.             <version>1.9.2</version>  
    35.         </dependency>  
    36.         <dependency>  
    37.             <groupId>org.apache.commons</groupId>  
    38.             <artifactId>commons-lang3</artifactId>  
    39.             <version>3.1</version>  
    40.         </dependency>  
    41.         <dependency>  
    42.             <groupId>commons-cli</groupId>  
    43.             <artifactId>commons-cli</artifactId>  
    44.             <version>1.2</version>  
    45.         </dependency>  
    46.         <dependency>  
    47.             <groupId>commons-codec</groupId>  
    48.             <artifactId>commons-codec</artifactId>  
    49.             <version>1.6</version>  
    50.         </dependency>  
    51.         <dependency>  
    52.             <groupId>commons-io</groupId>  
    53.             <artifactId>commons-io</artifactId>  
    54.             <version>2.2</version>  
    55.         </dependency>  
    56.         <dependency>  
    57.             <groupId>commons-net</groupId>  
    58.             <artifactId>commons-net</artifactId>  
    59.             <version>3.3</version>  
    60.         </dependency>  
    61.         <dependency>  
    62.             <groupId>commons-fileupload</groupId>  
    63.             <artifactId>commons-fileupload</artifactId>  
    64.             <version>1.3.1</version>  
    65.         </dependency>  
    66.         <dependency>  
    67.             <groupId>commons-dbcp</groupId>  
    68.             <artifactId>commons-dbcp</artifactId>  
    69.             <version>1.3</version>  
    70.         </dependency>  
    71.         <dependency>  
    72.             <groupId>org.apache.ant</groupId>  
    73.             <artifactId>ant</artifactId>  
    74.             <version>1.8.4</version>  
    75.         </dependency>  
    76.   
    77.         <!-- dependency of lucene -->  
    78.         <dependency>  
    79.             <groupId>org.apache.lucene</groupId>  
    80.             <artifactId>lucene-core</artifactId>  
    81.             <version>${lucene.version}</version>  
    82.         </dependency>  
    83.         <dependency>  
    84.             <groupId>org.apache.lucene</groupId>  
    85.             <artifactId>lucene-analyzers</artifactId>  
    86.             <version>${lucene.version}</version>  
    87.         </dependency>  
    88.         <dependency>  
    89.             <groupId>org.apache.lucene</groupId>  
    90.             <artifactId>lucene-highlighter</artifactId>  
    91.             <version>${lucene.version}</version>  
    92.         </dependency>  
    93.         <dependency>  
    94.             <groupId>org.apache.lucene</groupId>  
    95.             <artifactId>lucene-memory</artifactId>  
    96.             <version>${lucene.version}</version>  
    97.         </dependency>  
    98.         <dependency>  
    99.             <groupId>org.apache.lucene</groupId>  
    100.             <artifactId>lucene-queries</artifactId>  
    101.             <version>${lucene.version}</version>  
    102.         </dependency>  
    103.   
    104.         <!-- dependency of springframework -->  
    105.         <dependency>  
    106.             <groupId>org.springframework</groupId>  
    107.             <artifactId>spring-core</artifactId>  
    108.             <version>${spring.version}</version>  
    109.         </dependency>  
    110.         <dependency>  
    111.             <groupId>org.springframework</groupId>  
    112.             <artifactId>spring-context-support</artifactId>  
    113.             <version>${spring.version}</version>  
    114.         </dependency>  
    115.         <dependency>  
    116.             <groupId>org.springframework</groupId>  
    117.             <artifactId>spring-web</artifactId>  
    118.             <version>${spring.version}</version>  
    119.         </dependency>  
    120.         <dependency>  
    121.             <groupId>org.springframework</groupId>  
    122.             <artifactId>spring-webmvc</artifactId>  
    123.             <version>${spring.version}</version>  
    124.         </dependency>  
    125.         <dependency>  
    126.             <groupId>org.springframework.data</groupId>  
    127.             <artifactId>spring-data-commons-core</artifactId>  
    128.             <version>1.4.1.RELEASE</version>  
    129.         </dependency>  
    130.         <dependency>  
    131.             <groupId>org.springframework.data</groupId>  
    132.             <artifactId>spring-data-jpa</artifactId>  
    133.             <version>1.2.0.RELEASE</version>  
    134.         </dependency>  
    135.   
    136.         <dependency>  
    137.             <groupId>org.slf4j</groupId>  
    138.             <artifactId>slf4j-api</artifactId>  
    139.             <version>1.7.2</version>  
    140.         </dependency>  
    141.   
    142.         <dependency>  
    143.             <groupId>ch.qos.logback</groupId>  
    144.             <artifactId>logback-classic</artifactId>  
    145.             <version>1.0.7</version>  
    146.         </dependency>  
    147.         <dependency>  
    148.             <groupId>ch.qos.logback</groupId>  
    149.             <artifactId>logback-core</artifactId>  
    150.             <version>1.0.7</version>  
    151.         </dependency>  
    152.   
    153.         <!-- dependency of freemarker -->  
    154.         <dependency>  
    155.             <groupId>org.freemarker</groupId>  
    156.             <artifactId>freemarker</artifactId>  
    157.             <version>2.3.19</version>  
    158.         </dependency>  
    159.   
    160.         <!-- dependency of querydsl -->  
    161.         <dependency>  
    162.             <groupId>com.mysema.querydsl</groupId>  
    163.             <artifactId>querydsl-jpa</artifactId>  
    164.             <version>${querydsl.version}</version>  
    165.         </dependency>  
    166.         <dependency>  
    167.             <groupId>com.mysema.querydsl</groupId>  
    168.             <artifactId>querydsl-lucene</artifactId>  
    169.             <version>${querydsl.version}</version>  
    170.         </dependency>  
    171.   
    172.         <!-- dependency of hibernate-jpa -->  
    173.         <dependency>  
    174.             <groupId>org.hibernate</groupId>  
    175.             <artifactId>hibernate-core</artifactId>  
    176.             <version>3.6.10.Final</version>  
    177.         </dependency>  
    178.         <dependency>  
    179.             <groupId>org.hibernate</groupId>  
    180.             <artifactId>hibernate-entitymanager</artifactId>  
    181.             <version>3.6.10.Final</version>  
    182.         </dependency>  
    183.         <dependency>  
    184.             <groupId>org.hibernate.javax.persistence</groupId>  
    185.             <artifactId>hibernate-jpa-2.0-api</artifactId>  
    186.             <version>1.0.1.Final</version>  
    187.         </dependency>  
    188.         <dependency>  
    189.           <groupId>org.hibernate</groupId>  
    190.           <artifactId>hibernate-validator</artifactId>  
    191.           <version>4.2.0.Final</version>  
    192.         </dependency>  
    193.   
    194.         <!-- dependency of shiro -->  
    195.         <dependency>  
    196.             <groupId>org.apache.shiro</groupId>  
    197.             <artifactId>shiro-web</artifactId>  
    198.             <version>${shiro.version}</version>  
    199.         </dependency>  
    200.         <dependency>  
    201.             <groupId>org.apache.shiro</groupId>  
    202.             <artifactId>shiro-ehcache</artifactId>  
    203.             <version>${shiro.version}</version>  
    204.         </dependency>  
    205.         <dependency>  
    206.             <groupId>org.apache.shiro</groupId>  
    207.             <artifactId>shiro-spring</artifactId>  
    208.             <version>${shiro.version}</version>  
    209.         </dependency>  
    210.   
    211.         <!-- dependency of jcaptcha -->  
    212.         <dependency>  
    213.             <groupId>com.octo.captcha</groupId>  
    214.             <artifactId>jcaptcha</artifactId>  
    215.             <version>2.0-alpha-1</version>  
    216.         </dependency>  
    217.   
    218.         <!-- dependency of imgscalr -->  
    219.         <dependency>  
    220.             <groupId>org.imgscalr</groupId>  
    221.             <artifactId>imgscalr-lib</artifactId>  
    222.             <version>4.2</version>  
    223.         </dependency>  
    224.   
    225.         <!-- dependency of filters -->  
    226.         <dependency>  
    227.             <groupId>com.jhlabs</groupId>  
    228.             <artifactId>filters</artifactId>  
    229.             <version>2.0.235</version>  
    230.         </dependency>  
    231.   
    232.         <!-- dependency of jackson -->  
    233.         <dependency>  
    234.             <groupId>com.fasterxml.jackson.core</groupId>  
    235.             <artifactId>jackson-annotations</artifactId>  
    236.             <version>${jackson.version}</version>  
    237.         </dependency>  
    238.         <dependency>  
    239.             <groupId>com.fasterxml.jackson.core</groupId>  
    240.             <artifactId>jackson-core</artifactId>  
    241.             <version>${jackson.version}</version>  
    242.         </dependency>  
    243.         <dependency>  
    244.             <groupId>com.fasterxml.jackson.core</groupId>  
    245.             <artifactId>jackson-databind</artifactId>  
    246.             <version>${jackson.version}</version>  
    247.         </dependency>  
    248.         <dependency>  
    249.               <groupId>com.fasterxml.jackson.dataformat</groupId>  
    250.               <artifactId>jackson-dataformat-xml</artifactId>  
    251.               <version>${jackson.version}</version>  
    252.         </dependency>  
    253.   
    254.         <!-- dependency of htmlparser -->  
    255.         <dependency>  
    256.             <groupId>org.htmlparser</groupId>  
    257.             <artifactId>htmlparser</artifactId>  
    258.             <version>1.6</version>  
    259.         </dependency>  
    260.   
    261.         <!-- dependency of joda -->  
    262.         <dependency>  
    263.             <groupId>joda-time</groupId>  
    264.             <artifactId>joda-time</artifactId>  
    265.             <version>2.1</version>  
    266.         </dependency>  
    267.   
    268.         <dependency>  
    269.             <groupId>com.oracle</groupId>  
    270.             <artifactId>ojdbc14</artifactId>  
    271.             <version>10.2.0.3.0</version>  
    272.         </dependency>  
    273.           
    274.         <!--<dependency>  
    275.             <groupId>com.oracle</groupId>  
    276.             <artifactId>ojdbc6</artifactId>  
    277.             <version>12.1.0.1</version>  
    278.         </dependency>-->  
    279.   
    280.   
    281.         <dependency>  
    282.             <groupId>org.aspectj</groupId>  
    283.             <artifactId>aspectjweaver</artifactId>  
    284.             <version>1.7.2</version>  
    285.         </dependency>  
    286.   
    287.         <dependency>  
    288.             <groupId>javax.servlet</groupId>  
    289.             <artifactId>servlet-api</artifactId>  
    290.             <version>2.4</version>  
    291.             <scope>provided</scope>  
    292.         </dependency>  
    293.           
    294.         <dependency>  
    295.             <groupId>org.apache.httpcomponents</groupId>  
    296.             <artifactId>httpcore</artifactId>  
    297.             <!--<scope>test</scope>-->  
    298.             <version>4.3.2</version>  
    299.         </dependency>  
    300.   
    301.         <dependency>  
    302.             <groupId>org.apache.httpcomponents</groupId>  
    303.             <artifactId>httpclient</artifactId>  
    304.             <!--<scope>test</scope>-->  
    305.             <version>4.3.2</version>  
    306.         </dependency>  
    307.           
    308.         <dependency>  
    309.           <groupId>org.codehaus.woodstox</groupId>  
    310.           <artifactId>stax2-api</artifactId>  
    311.           <version>4.0.0</version>  
    312.         </dependency>  
    313.           
    314.         <dependency>  
    315.           <groupId>org.quartz-scheduler</groupId>  
    316.           <artifactId>quartz</artifactId>  
    317.           <version>2.1.7</version>  
    318.         </dependency>  
    319.   
    320.         <dependency>  
    321.               <groupId>junit</groupId>  
    322.               <artifactId>junit</artifactId>  
    323.               <version>3.8.1</version>  
    324.               <scope>test</scope>  
    325.             </dependency>  
    326.     </dependencies>  
    327. <distributionManagement>  
    328.   <repository>  
    329.       <id>nexus</id>  
    330.       <name>Releases</name>  
    331.       <url>http://私服ip:8081/repository/maven-releases</url>  
    332.     </repository>  
    333.     <snapshotRepository>  
    334.       <id>nexus</id>  
    335.       <name>Snapshot</name>  
    336.       <url>http://私服ip:8081/repository/maven-snapshots</url>  
    337.     </snapshotRepository>  
    338.   </distributionManagement>  
    339.     <build>    
    340.       <defaultGoal>compile</defaultGoal>  
    341.     <finalName>page</finalName>  
    342.         <plugins>    
    343.          <plugin>   
    344.             <groupId>org.apache.maven.plugins</groupId>   
    345.             <artifactId>maven-surefire-plugin</artifactId>    
    346.              <version>2.6</version>    
    347.             <configuration>    
    348.                 <skip>true</skip>    
    349.             </configuration>   
    350.         </plugin>  
    351.             <plugin>    
    352.                 <groupId>org.apache.maven.plugins</groupId>    
    353.                 <artifactId>maven-compiler-plugin</artifactId>    
    354.                 <version>2.1</version>    
    355.                 <configuration>    
    356.                     <source>1.6</source>    
    357.                     <target>1.6</target>    
    358.                 </configuration>    
    359.             </plugin>    
    360.         </plugins>    
    361.     </build>  
    362. </project>  

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

    Xml代码  收藏代码
    1. <settings>  
    2.   
    3.   <pluginGroups>  
    4.     <pluginGroup>org.sonatype.plugins</pluginGroup>  
    5.   </pluginGroups>  
    6.   
    7.  <servers>  
    8.     <server>  
    9.       <id>nexus</id>  
    10.       <username>admin</username>  
    11.       <password>admin123</password>  
    12.     </server>  
    13.   </servers>  
    14.   
    15. <mirrors>  
    16.     <mirror>  
    17.       <id>nexus</id>  
    18.       <mirrorOf>*</mirrorOf>  
    19.       <url>http://私服ip:8081/repository/maven-public/</url>  
    20.     </mirror>  
    21.     <mirror>    
    22.       <id>repo2</id>    
    23.       <mirrorOf>central</mirrorOf>    
    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>nexus</id>  
    33.       <repositories>  
    34.         <repository>  
    35.           <id>central</id>  
    36.           <url>http://私服ip:8081/repository/maven-central</url>  
    37.           <releases><enabled>true</enabled></releases>  
    38.           <snapshots><enabled>true</enabled></snapshots>  
    39.         </repository>  
    40.       </repositories>  
    41.      <pluginRepositories>  
    42.         <pluginRepository>  
    43.           <id>central</id>  
    44.           <url>http://私服ip:8081/repository/maven-central</url>  
    45.           <releases><enabled>true</enabled></releases>  
    46.           <snapshots><enabled>true</enabled></snapshots>  
    47.         </pluginRepository>  
    48.       </pluginRepositories>  
    49.     </profile>  
    50.   </profiles>  
    51.   <activeProfiles>  
    52.     <activeProfile>nexus</activeProfile>  
    53.   </activeProfiles>  
    54. </settings>  
     

    然后执行mvn clean deploy

    八 jenkins,sonar和 maven集成

    8.1 jenkins安装

    1,Jenkins的默认工作间在C:Usersxxxxxx.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也同样需要安装插件。

    image_1b4i6426o4sb18mp16ob4vl1evd4o.png-121.8kB

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

    image_1b4i64e6l199910vo1u3d1tsh148k55.png-140.1kB

    1,系统设置

    1)全局属性 -Tool Locations



    2) SonarQube servers



     

    3) Jenkins Location


    3) Extended E-mail Notification

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

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

     

     

     

    4) 邮件通知

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

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

     

     

    2 Global Tool Configuration

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

    image_1b4i650bnnp2n7v1idt1f9o6vu5v.png-125.7kB

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




     

    配完后点击保存。

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

     
     

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



     


     2)构建触发器,3分钟触发一次
     
       


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

    image_1b4i65rj31qufmou16u417q914hn6p.png-27.2kB

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

      




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

     

     

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

    转载自:

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

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


    选择html
     

    点击“add trigger”选择awyas

     


     


    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. 构建日志地址:<href="${BUILD_URL}console">${BUILD_URL}console</a><br/><hr/>  
    9. 构建地址:<href="$BUILD_URL">$BUILD_URL</a><br/><hr/>  
    10. 变更集:${JELLY_SCRIPT,template="html"}<br/><hr/>  
    将构建日志压缩作为附件也添加到邮件当中发送,需要注意的是,每一次构建都会产生一个报告文档,仓库里会包含有之前构建的所有的报告文档,
    所以需要打包的是当前这次产生的报告文档,不是之前的构建产生的文档点击应用“apply”,然后保存

    八 构建项目

    填写完毕后,我们点击保存 
    image_1b4i66u061lhp1qkjvk6124a1k497j.png-90.1kB

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

    构建的日志。

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

     

     

     

     

  • 相关阅读:
    个人期末总结
    团队冲刺第二阶段10
    团队冲刺第二阶段9
    团队冲刺第二阶段8
    团队冲刺第二阶段7
    团队冲刺第二阶段6
    数据分析之例题
    数据分析之数据操作
    数据分析之Matplotlib可视化
    数据分析之Pandas
  • 原文地址:https://www.cnblogs.com/ceshi2016/p/9099824.html
Copyright © 2011-2022 走看看