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可以看到构建的日志。

     

     

     

     

  • 相关阅读:
    数据库表结构变动发邮件脚本
    .net程序打包部署
    无法登陆GitHub解决方法
    netbeans 打包生成 jar
    第一次值班
    RHEL6 纯命令行文本界面下安装桌面
    C语言中格式化输出,四舍五入类型问题
    I'm up to my ears
    How to boot ubuntu in text mode instead of graphical(X) mode
    the IP routing table under linux@school
  • 原文地址:https://www.cnblogs.com/ceshi2016/p/9099824.html
Copyright © 2011-2022 走看看