性能自动化部署工程:Jenkins部署Java工程,WEB工程

1. Jenkins部署Java工程说明

(1)可以用Jenkins的中一个job对一个Maven项目下的多个工程文件夹进行管理和操作:可以在一个job中实现编译,打包,部署。而不需要建立4个job。

(2)Java的Maven工程结构构建顺序是:

-> parent (使用mvn install 生成对pom的引用)

->common, common-core(使用命令 mvn install 生成对应的jar包)

->具体工程(使用命令 mvn clean package 生成对应的war包)

(3)在Jenkins上通过新建job,实现自动化构建和部署java工程到linux机器上。

安装好Linux后,需要关闭系统的防火墙。

然后安装tomcat和jdk,并配置好环境变量。

安装好tomcat后,需要对tomcat的配置文件进行修改,以符合部署系统的要求。

之后再启动tomcat, 为后续的部署系统做准备。

(4)为了便于Jenkins的部署和管理,需要统一命名tomcat目录名称和工程名称。

并根据部署的环境要求,如何配置哪个工程需要部署到哪台机器的tomcat中。

根据需求修改tomcat的conf目录下的文件: server.xml, tomcat-user.xml。

其中修改server.xml的3个地方port的值,各个tomcat中的port值需要唯一且未被系统占用。

如果所有的Java工程是部署到不同的机器上,则需要在Jenkins上配置连接到不同机器的ssh用户。

如果所有的Java工程都部署到一台机器上,则只需配置1个ssh用户。

2. Jenkins中设置远程连接Linux的账户

(1)将文件中的sh脚本放到对应工程机器的/usr/local/src目录下。比如:test_project_xxx.sh

即:需要将该脚本上传到部署工程机器的/usr/local/src目录下,其他脚本同理。

(2)在Jenkins的系统管理->系统配置->Publish over SSH中,做相应的设置。

注意,要先确保已经安装了Publish over SSh插件。

具体配置信息如下。

3. Jenkins中,对应Job的配置说明

(1) 在job的构建后步骤中,添加如下选项,以及配置内容

选项解析:

Transfer Set Source files:Jenkins服务器上war包的路径和包名

Remove prefix:Jenkins服务器上war包的路径

Remote directory:war包上传到被部署的机器上所存放的路径

Exec command:要执行的shell脚本命令,以shell文件的形式被调用

示例: Transfer Set Source files: /test_project/admin/target/*.war Remove prefix: /test_project/admin/target/ Remote directory: /test_project Exec command: bash /data/local/test_project/test_project_admin.sh //自动打包部署的shell脚本

自动化部署脚本参考

#!/bin/bash set -x source /etc/profile id=`ps -ef | grep java | grep tomcat_test_project_admin | awk {print $2}` ............... (稍后补)

注意:

如果在调用linux上的shell脚本时,shell脚本没有错误,但是在调用时发生了错误,可通过dos2unix将shell转换后,再执行。

执行脚本的步骤:

先停掉tomcat服务,再删除tomcat中的webapps目录下的应用文件夹和应用war包,赋值要部署的新war包到webapps目录下,重新启动tomcat服务。

(2)在系统管理->系统配置->Publish over SSH中,新增SSH Servers。

其中 Remote Directory的配置为:test_project。

该目录会合并上面的额目录,最后war包会放到/data/local/test_project下。

4. Jenkins部署WEB工程

(1)第一种方法

将该项目部署到对应的web容器中,比如部署到tomcat容器中。

(2)第二种方法

(3)执行的shell脚本参考:scp-admin.sh脚本内容如下,放在/home/test目录下

#!/bin/bash projectFile=`ls /usr/local/workspace/test_project/admin/target/*.war` if......................... (稍后补)
经验分享 程序员 微信小程序 职场和发展