CI服务器搭建

CI服务器

CI服务器,持续集成服务器,通过自动化的构建来验证,包括自动编译、发布和测试,从而尽快地发现集成错误,让团队能够更快的开发内聚的软件。本文搭建基于 Docker+Jenkis+Sonar+Nexus 的CI服务器。

环境准备

Docker环境准备(略),确信docker服务已安装并且docker命令可执行。

    sudo docker

Nexus安装

1.安装

    sudo docker search nexus

找到sonatype/nexus

    sonatype/nexus                       Sonatype Nexus                                  51                   [OK]
    sudo docker pull sonatype/nexus

下载image完成后,启动nexus

    sudo docker run -d -p 8081:8081 --name sonatype-nexus -v /app/nexus-data/sonatype-work:/sonatype-work sonatype/nexus:oss 

映射容器8081端口和数据存放目录/sonatype-work 到宿主机器上。

2.配置

访问 http://nexus:8081 默认管理员账号admin/admin123登录。

http://nexus:8081

Jenkins安装

1.安装

    sudo docker search jenkins

找到官方image

    jenkins                               Official Jenkins Docker image                   553       [OK]     
    sudo docker pull jenkins

下载image完成后,启动jenkins

    sudo docker run --name jenkins -d -u root -p 8080:8080 -v /app/jenkins_home:/var/jenkins_home jenkins

映射容器8080端口和数据存放目录/var/jenkins_home 到宿主机器上。

2.配置

访问 http://jenkins:8080

http://jenkins:8080

Sonar安装

1.安装

    sudo docker search sonar

找到官方image

     sonarqube                    SonarQube is an open source platform for c...   46        [OK]      
     sudo docker pull sonarqube

下载image完成后,启动sonar

    sudo docker run -d --name sonarqube -p 9000:9000 -p 9092:9092 sonarqube

映射容器90009092端口 到宿主机器上。

2.配置

访问 http://sonar:9000 默认管理员账号admin/admin登录

http://sonar:9000

开发部署实例

场景描述:现有多module的Maven项目qts(量化择时系统),使用SVN做代码版本控制,需要通过CI服务器,做自动编译、发布、测试和代码质量检查。最终部署到SIT环境。

1.设置本地Maven的仓库为Nexus私有仓库并添加Sonar配置,需要修改settings.xml,

    <settings> 
     <!-- 仓库设置Nexus -->
     <mirrors>
        <mirror>
        <id>local_mirror</id> 
        <mirrorOf>*</mirrorOf>
        <name>local_mirror</name>
        <url>http://nexus:8081/content/groups/public/</url>
        </mirror>
     </mirrors> 
     <profiles>
            <!-- Sonar 配置 -->
            <profile>
                <id>sonar</id>
                <activation>
                    <activeByDefault>true</activeByDefault>
                </activation>
                <properties>
                    <!-- optional URL to server. Default value is http://localhost:9000 -->
                    <sonar.host.url>http://sonar:9000/</sonar.host.url>
                    <sonar.jdbc.url>jdbc:h2:tcp://sonar/sonar</sonar.jdbc.url>
                </properties>
            </profile>
         </profiles>
    </settings>

2.打开Jenkins管理控制台,进入系统配置->管理插件,安装以下插件:

        *Maven Integration plugin //Maven集成插件
        *Publish Over SSH    //发布SSH工具
        *SonarQube Plugin    //Sonar插件    
        *Subversion Plug-in //Svn插件

进入系统配置->系统设置 修改 Maven Configuration,并按上步配置settings.xml

http://jenkins:8080

配置 SonarQube Runner

http://jenkins:8080

配置 Publish over SSH,192.168.55.64 为SIT测试环境主机

http://jenkins:8080

3.新建 Qts-sit 项目

http://jenkins:8080

配置 Qts-sit 项目源码管理

http://jenkins:8080

https://192.168.55.61/svn/src_code/qts@HEAD SVN项目地址,@HEAD 表示根据版本HEAD变化检查源码。

配置构建触发器,选择 Poll SCM,定义轮询规则*/5 * * * * 表示5分钟轮询一次。

http://jenkins:8080

选择构建后操作步骤->SonarQube, 此配置节点通过Sonar Runner自动任务,构建后把代码发布到Sonar做代码质量检查。

http://jenkins:8080

选择构建后操作步骤->Send build artifacts over SSH
配置 Send build artifacts over SSH ,此配置节点通过SSH登录SIT测试服务器,执行Weblogic的redepoly

http://jenkins:8080

4.测试项目
本地开发人员修改代码并提交SVN,5分钟后,Jenkins将会自动构建、测试、并部署到SIT测试环境。在SIT测试环境已经可以查看到最新代码的变化。

http://jenkins:8080

点击SonarQube,跳转到代码质量管理Sonar页面

http://jenkins:8080

5.Sonar 管理

sonar中可以对每个项目自定义代码质量检查规则,可以安装插件以支持多种开发语言,相关配置参考官方文档。