2015年8月31日星期一

MAC_035:使用 Maven + Nexus + SVN + Jenkins 搭建持续集成环境

环境:MAC OS X 10.9.3 + JDK 1.7.0 Update 55 + Maven 3.2.1 + Svnserve 1.7.1 + Nexus 2.8.0-05 + Jenkins 1.568

本文只介绍搭建步骤,不介绍原理,不清楚原理的请参考《Maven实战》。

1. 安装 JDK

2. 安装 Maven 
下载地址:http://maven.apache.org/。
下载后,解压到一个目录下即可。

配置环境脚本(setJdk7.sh)内容如下:
#!/bin/sh

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_55.jdk/Contents/Home
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar
export ANT_HOME=/Users/maping/Apache/ant
export MAVEN_HOME=/Users/maping/Apache/maven
export PATH=$JAVA_HOME/bin:$ANT_HOME/bin:$MAVEN_HOME/bin:$PATH

这里为了方便,我是用了目录软连接:
ln -s maven-3.2.1 maven
以后Maven升级后,比如升到了3.2.2版本,只需执行如下命令,而环境脚本无需修改:
rm maven
ln -s maven-3.2.2 maven

安装好后,可以使用:mvn -v 查看Maven版本,确认安装成功。
或者使用:mvn help:system 查看系统环境。

3. 安装 Nexus
Nexus将作为Maven的私服,下载地址:http://www.sonatype.org/nexus/。
我下载的是:nexus-2.8.0-05-bundle.tar.gz,解压后有两个目录:nexus-2.8.0-05和sonatype-work。
nexus-2.8.0-05是会随版本变化的,而sonatype-work是固定的,每个版本都有这个目录,包含配置文件、日志文件、仓库文件。
进入Nexus的bin目录下,执行
(1)前台启动 Nexus:./nexus console
(2)停止后台 Nexus:./nexus stop
(3)后台启动 Nexus:./nexus start
(4)查看 Nexus 状态:./nexus status
(5)后台重启 Nexus:./nexus restart

访问:http://localhost:8081/nexus/,管理员账户默认:admin/admin123。



如果想要修改Nexus默认的8081端口,修改nexus-2.8.0-05/conf/nexus.properties即可。

3. 修改~/.M2/settings.xml,让Maven从Nexus下载构件。
完整的settings.xml内容如下:

<?xml version=“1.0” encoding=“UTF-8”?>

<settings xmlns=“http://maven.apache.org/SETTINGS/1.0.0” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=“http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd”>
 
    <servers>
        <server>
            <id>nexus-releases</id>
            <username>admin</username>
            <password>welcome1</password>
        </server>
        <server>
            <id>nexus-snapshots</id>
            <username>admin</username>
            <password>welcome1</password>
        </server>  
    </servers>
 
    <mirrors>
        <mirror>
            <id>nexus</id>
            <mirrorOf>*</mirrorOf>
            <url>http://localhost:8081/nexus/content/groups/public/</url>
        </mirror>
    </mirrors>
         
    <profiles>
     
        <!— Configure the Nexus repository —>
        <profile>
            <id>nexus</id>
            <repositories>
                <repository>
                    <id>nexus</id>
                    <name>Nexus</name>
                    <layout>default</layout>
                    <url>http://localhost:8081/nexus/content/groups/public/</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </repository>
            </repositories>
     
            <pluginRepositories>
                <pluginRepository>
                    <id>nexus</id>
                    <name>Nexus</name>
                    <layout>default</layout>
                    <url>http://localhost:8081/nexus/content/groups/public/</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </pluginRepository>
            </pluginRepositories>
        </profile>
     
    <activeProfiles>
        <activeProfile>nexus</activeProfile>
    </activeProfiles>

</settings>

这样配置之后,所有的构件都是从私服上获取,私服上没有,就从公共的仓库获取,并且获取后上传到在私服上。

4. 安装 Jenkins
下载地址:http://jenkins-ci.org/。我下载的是war文件:jenkins.war。
启动Jenkins:java -jar jenkins.war --httpPort=8082

5. 安装 Svnserve 
Svnserve是一个Subversion服务器软件,默认已经安装到了MAC OS X中。
使用命令:svnserve —version 查看svnserve版本。
(1)创建SVN Repository:svnadmin create /Users/maping/svn/repository
(2)导入已有的Maven项目:svn import -m "initial import" /Users/maping/NetBeansProjects/Nb8/MavenEnterpriseApp file:///Users/maping/svn/repository
(3)启动Svnserve:svnserve -d -r /Users/maping/svn/repository
或者 svnserve -d -r /Users/maping/svn/repository --listen-host 0.0.0.0
(4)查看SVN Repository:svn list svn://localhost/MavenEnterpriseApp
或者指定IP地址:svn list svn://192.168.0.101/MavenEnterpriseApp

6. 配置Jenkins
(1)全局配置:JDK、ANT、Maven、Jenkins。



(2)创建项目,配置项目:SVN,SVM Poll,Maven Goals。


 (3)选择Bulid Now,如果没有错误,就说明环境搭建成功!

说明:我的项目MavenEnterpriseApp是使用NetBeans8开发的。
以后在NetBeans中修改代码后,可以在Jenkins中随时Build,这里设置为每隔15分钟自动Build。

参考文献:
1. 《Maven实战》,是一本好书,严重推荐。
2. https://netbeans.org/kb/docs/javaee/maven-entapp_zh_CN.html

没有评论: