拓扑图如下:

 

一、Jenkins搭建

1、安装最新的linux系统CentOS-7-x86_64-Minimal,更新系统以及安装软件

yum upgrade -y && yum update -y

yum install epel-release lrzsz vim net-tools unzip wget gcc g++ cmake git svn -y

2、添加系统用户apps,安装jdk1.8。执行如下命令:

useradd apps

mkdir -p /apps/svr

tar -zxf jdk-8u131-linux-x64.tar.gz -c /apps/svr

ln -s /apps/svr/jdk1.8.0_131 /apps/svr/jdk

修改apps用户的home目录下的配置文件.bashrc,追加如下内容:

export JAVA_HOME=/apps/svr/jdk

export JRE_HOME=/apps/svr/jdk/jre

CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$CLASSPATH

3、下载最新的LTS版的Jenkins包(Generic java package)到路径/apps/svr/tomcat,用apps用户后台启动。

Java -jar jenkins.war &

4、安装maven。

下载最新的apache-maven-3.3.9-bin.zip包,解压到/usr/local路径,修改/etc/profile,增加:

export MAVEN_HOME=/usr/local/apache-maven-3.3.9

PATH=$PATH:$MAVEN_HOME/bin

修改maven的配置文件/usr/local/apache-maven-3.3.9/conf/settings.xml,增加访问nexus私服的设置。

6、安装Jenkins插件。浏览器打开http://IP地址:8080,打开Jenkins的安装界面,安装所有的推荐插件,包括Multiple SCMs plugin。

7、配置Jenkins工具。登录Jenkins,打开系统管理(manage Jenkins),进入global tool configuration

a)JDK

Name jdk1.8

JAVA_HOME /apps/svr/jdk1.8.0_131

如果想要多个jdk版本,可以选择新增JDK。

b)git

Name Default

Path to Git executable git

c)Maven

Name apache-maven-3.3.9

MAVEN_HOME /usr/local/apache-maven-3.3.9

8、添加拉取gitlab代码凭证。登录Jenkins,在credentials,system,global credentials下,选择add credentials,输入gitlab系统的账号密码。

二、Jenkins的使用

Jenkins工作目录在apps用户的home目录下,一个隐藏文件夹.jenkins。从gitlab拉取回来的代码都在workspace目录下。

以下以新建order-prod项目为例:

1、登录Jenkins,点击“new item”,输入项目名字order-prod,选择“maven project”。

2、在“Source Code Management”(源码管理),选择Multiple SCMs(前面需要安装插件Multiple SCMs plugin),然后选择Add SCM中的git,“Repository URL”填写项目代码的gitlab路径,credentials选择之前添加的凭证,也可以现在add添加。“Branch Specifier”填代码分支名字。再次择Add SCM中的git,这次添加项目的配置文件的gitlab路径,凭证分支,然后选择“additional behaviours”,再选择“check out to a sub-directory”,手动指定从gitlab拉取下来的文件的存放路径,这里我填写/home/apps/.jenkins/workspace/order-prod-config。

3、在“pre steps”,选择“add pre-build step”中的“execute shell”,在command中输入shell命令“cp /home/apps/.jenkins/workspace/kepler-prod-config/* /home/apps/.jenkins/workspace/kepler-prod/src/main/resources/”,这个命令是在maven打包构建之前替换项目代码里面的配置文件。测试环境,灰度环境,正式环境都用不同的配置文件。

4、在“build”中,“ROOT POM”填写pox.xml,goals and options填写“clean install  -Dmaven.test.skip=true”。这里是maven构建的命令。

5、在最后“post steps”,首先选择“run only if build succeeds”,“execute shell”填写命令“cp -R /home/apps/.jenkins/workspace/kepler-prod/target/kepler-service-1.0.0-SNAPSHOT.jar /home/apps/svn_mall/sadoc/kepler/ && cd /home/apps/svn_mall/sadoc/kepler && svn add kepler-service-1.0.0-SNAPSHOT.jar && svn commit -m "kepler update"”。这个命令实际上就是利用把构建好的待发布的包,上传到SVN服务器。在此之前,需要登录服务器,在/home/apps/svn_mall/路径执行“svn --username=xingmaogou co svn://192.168.100.7/sadoc”,这里username为SVN的用户名,IP地址替换为相对于的公网IP地址,然后执行“svn add kepler-service-1.0.0-SNAPSHOT.jar”。

这样,Jenkins这端配置完成。

三、SVN服务器搭建

SVN服务器搭建在生产环境所在的内网,生产环境的walle服务器能访问,并且需要映射端口出来给公司内外Jenkins访问。

1、yum安装SVN服务器

首先看系统是否安装了svn,rpm -qa subversion,如果已经安装,需要先行卸载。然后

yum -y install  subversion

2、配置SVN并且启动

指定svn的数据存储路径

      mkdir -p /application/svndata

      指定svn的配置文件信息路径

      mkdir -p /application/svnpasswd

      启动svn服务

       svnserve -d -r /application/svndata/

3、检测svn服务是否正常启动,如果能看到下图所示则证明启动成功

       第一通过进程检测

        ps -ef | grep svn

       第二通过端口3690检测

       netstat -lntup | grep 3690

       第三通过文件检测,需要root用户才可以执行

       lsof -i :3690

4、使用svnadmin建立svn项目版本库

      查看创建项目版本库命令

      svnadmin --help

      svnadmin help create

      创建sadoc版本库

       svnadmin create /application/svndata/sadoc

5、配置sadoc版本可的权限

     进入sadoc版本库配置目录,并备份配置文件

    cd /application/svndata/sadoc/conf/

    cp -p svnserve.conf svnserve.conf.default

    进行详细配置

     anon-access = none //禁止匿名访问

     auth-access = write //认证后有读的权限

     password-db = /application/svnpasswd/passwd //指定密码文件

     authz-db = /appplication/svnpasswd/authz //指定权限认证文件

6、复制passwd和authz文件到sadoc的svnpasswd目录并修改权限

      执行如下命令完成操作

      cp -p authz passwd /application/svnpasswd/

      cd /application/svnpasswd/

      chmod 700 authz passwd

7、为Svn版本库创建用户并授权访问指定项目版本库

      编辑passwd文件配置用户和密码

      vi passwd 

      xingmaogou = xingmaogou

      xingyuan  = xingyuan

      编辑authz文件配置读取权限

       [<版本库>:/项目/目录]

       @<用户组名> = <权限>

       <用户名>  = <权限>

8、重新启动svn服务进行验证

      杀死svn服务

       pkill svnserve

       启动svn

       svnserve -d -r /application/svndata/

       备注:修改passwd和authz文件不需要重启svn服务而修改svnserve.conf则需要

9、最后安装客户端进行sadoc的配置是否正确

       svn --username=xingmaogou co svn://121.xxx.xxx.xx9/sadoc

四、walle发布系统搭建

Walle为专门国产开源的发布系统,可以多台主机,多种环境,多用户执行发布任务,并且可以回滚。https://walle-web.io/。相对于Jenkins搭建在公司内外,walle需要安装在生产环境的内网。安装注意参照官方文档https://walle-web.io/docs/installation.html。但是需要注意的地方有几点

1、安装SVN客户端并且能否访问前面搭建的SVN服务器

2、安装yum安装nginx,PHP,并且都用同一个用户启动,修改nginx,和PHP-fpm配置文件,启动用户都用apps。

3、yum安装php相关软性的时候,如yum install php56w.x86_64 php56w-cli.x86_64 php56w-common.x86_64 php56w-gd.x86_64 php56w-ldap.x86_64 php56w-mbstring.x86_64 php56w-mcrypt.x86_64 php56w-mysql.x86_64 php56w-pdo.x86_64 php56w-fpm,软件名字都不需要“56w”,否则会安装失败。

4、邮箱配置是在walle的PHP项目工程的config文件夹下的local.php配置,具体参照https://github.com/meolu/walle-web

5、walle配置,在管理员登录walle之后,在项目配置中,新建项目。特别需要注意的是,“宿主机”下,“代码检出仓库”是位于walle系统所在linux主机。目标机器就是生产环境所在主机,用户为apps用户,webroot目录需要特别注意,这个路径在服务器上只需要创建到父一级,比如你填写的是“/data/www/walle”,但是在生产服务器上只能创建目录“/data/www”。

6、walle服务器的ssh公钥需要放到所有目标服务器的apps用户下,信任从而能免密码登陆。

全部配置好之后,普通用户邮件申请账号,管理员添加项目并且给普通用户授发布权限。

7、高级任务里,可以填写shell命令用于重启程序。

8、“分支/tag上线”选择“无trunk/无branches”,然后开启审核。