专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > VSTS

test环境中自动完成从cvs更新代码、构建支配等,简化部署过程

发布时间:2011-06-20 18:38:15 文章来源:www.iduyao.cn 采编人员:星星草
test环境中自动完成从cvs更新代码、构建部署等,简化部署过程!
之前文章中描述了怎么利用maven profile分dev、test、pro三种环境,为了方便test环境中部署最新代码,利用maven和shell,执行脚本完成代码从cvs的更新、构建、undeply、停止tomcat、deploy、启动tomcat过程。主要借助三个插件帮助我完成上面所有动作
1:maven scm plugin 从cvs更新代码
2:maven cargo plugin 执行undeply、停止tomcat、deploy、启动tomcat
3:mavaen antrun plugin, 如果cargo中配置jmx端口,jvm启动jmx。cargo:stop无法正常停止服务器,于是使用antrun plugin来停止服务器。

下面贴出pom.xml配置和shell script,配置不算复杂,相信很容易看懂。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.ustcsoft.eisp.cargo</groupId>
	<artifactId>cargo-deployer-local</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>pom</packaging>
	
	<properties>
		<myproject.name>ROOT</myproject.name>
		<cargo.project.groupid>com.ustcsoft.eisp</cargo.project.groupid>
		<cargo.project.artifactid>eisp-integration</cargo.project.artifactid>
		<cargo.project.version>0.0.1-SNAPSHOT</cargo.project.version>
		
		<!--可单独提取并配置到profiles文件来激活 -->
		<catalina.home>/home/tomcat/eisp-tomcat</catalina.home>
		<cargo.tomcat.manager.protocol>http</cargo.tomcat.manager.protocol>
		<cargo.tomcat.manager.hostname>127.0.0.1</cargo.tomcat.manager.hostname>
		<cargo.tomcat.manager.port>8080</cargo.tomcat.manager.port>
		<cargo.tomcat.manager.ajp.port>8009</cargo.tomcat.manager.ajp.port>
		<cargo.tomcat.manager.username>manager</cargo.tomcat.manager.username>
		<cargo.tomcat.manager.password>000000</cargo.tomcat.manager.password>
 	</properties>

	<dependencies>
		<dependency>
			<groupId>${cargo.project.groupid}</groupId>
			<artifactId>${cargo.project.artifactid}</artifactId>
			<version>${cargo.project.version}</version>
			<type>war</type>
		</dependency>
	</dependencies>
	
	<scm>
		<connection>scm:cvs:pserver:ste-cloud:starrd-tester@192.168.20.4:1401/TS-CLOUD</connection>
		<developerConnection>scm:cvs:pserver:ste-cloud:starrd-tester@192.168.20.4:1401/TS-CLOUD</developerConnection>
	</scm>
	
	<build>
		<plugins>
			<plugin>
		      	<groupId>org.apache.maven.plugins</groupId>
		        <artifactId>maven-scm-plugin</artifactId>
		        <configuration>
		        	<username>ste-cloud</username>
	        		<workingDirectory>/home/tomcat/sources/eisp</workingDirectory>
          			<providerImplementations>
		            	<cvs>cvs_native</cvs>
		          	</providerImplementations>
		        </configuration>
		    </plugin>
			<plugin>
				<groupId>org.codehaus.cargo</groupId>
				<artifactId>cargo-maven2-plugin</artifactId>
				<version>1.2.0</version>
				<configuration>
					<wait>true</wait>
					<!--以下标记将详细描述你想要部署的容器-->
					<container>
						<containerId>tomcat7x</containerId>
						<type>installed</type><!-- 本地已安装Tomcat时设置 -->
						<home>${catalina.home}</home><!--本地Tomcat安装目录 -->
					</container>
					<!-- 容器的属性 -->
					<configuration>
						<!-- 如果你在容器属性中指定类型为"installed"的话,你就必须在如下配置type==existing和重配一次安装目录-->
						<type>existing</type>
						<home>${catalina.home}</home>
						<properties>
							
							<cargo.tomcat.manager.url>
							${cargo.tomcat.manager.protocol}://${cargo.tomcat.manager.hostname}:${cargo.tomcat.manager.port}/manager
							</cargo.tomcat.manager.url>
							<cargo.servlet.port>${cargo.tomcat.manager.port}</cargo.servlet.port>
							<cargo.remote.username>${cargo.tomcat.manager.username}</cargo.remote.username>
							<cargo.remote.password>${cargo.tomcat.manager.password}</cargo.remote.password>
							<cargo.tomcat.ajp.port>${cargo.tomcat.manager.ajp.port}</cargo.tomcat.ajp.port>
							<cargo.jvmargs>
								-Dcom.sun.management.jmxremote=true 
								-Dcom.sun.management.jmxremote.port=1099 
								-Dcom.sun.management.jmxremote.ssl=false 
								-Dcom.sun.management.jmxremote.authenticate=false 
								-Djava.rmi.server.hostname=172.17.3.242 
								-Djava.awt.headless=true
							</cargo.jvmargs>
						</properties>
					</configuration>
					<!-- 准备执行部署 -->
					<deployer>
						<!-- 类型设置必须跟容器一致 -->
						<type>installed</type>
						<deployables>
							 <!--在deployable中指定你要部署的webapp -->
							<deployable>
								 <groupId>${cargo.project.groupid}</groupId> 
								 <artifactId>${cargo.project.artifactid}</artifactId>
								 <type>war</type>
								 <!--如果你想重新定义Web应用的名称时设置,大多数情况下你都会定义此属性-->
								 <properties>
								 <context>${myproject.name}</context>
								 </properties>
							</deployable>
						</deployables>
					</deployer>
				</configuration>
			</plugin>
			
			<plugin>
  				<artifactId>maven-antrun-plugin</artifactId>
  				<version>1.7</version>
      			<configuration>
        			<target>
				      	<exec executable="bash" dir="${catalina.home}">  
				        	<arg line="./bin/catalina.sh stop"/>  
				      	</exec>  
          				<sleep seconds="5" />
        			</target>
      			</configuration>
			</plugin>
		</plugins>
	</build>
</project>


#!/bin/sh
#功能:测试环境代码更新、打包、停止服务器、部署、启动服务器功能的实现

#提示键盘输入
printf "测试环境代码是否需要更新打包Please enter Yes/No:"
#读取输入字符
read a
case $a in
Yes|yes|y)
   echo "you choose Yes"
   #更新代码
   mvn scm:update
   cd /home/tomcat/sources/eisp/com.ustcsoft.eisp.parent
   #打包
   mvn install -U
   cd /home/tomcat/sources/cargo/cargo-deployer-local
   #撤销部署
   mvn cargo:undeploy
   #休息10s
   sleep 10s
   #停止服务器,增加jmx端口以后,无法使用cargo:stop正常停止服务器,使用ant 调用shell停止服务器。
   mvn antrun:run
   #部署
   mvn cargo:deploy
   #启动服务器
   nohup mvn cargo:run &;;
No|no|n)
   echo "you choose No"
   cd /home/tomcat/sources/cargo/cargo-deployer-local
   mvn cargo:undeploy
   sleep 10s
   mvn cargo:stop
   mvn cargo:deploy
   nohup mvn cargo:run &;;
*)
   echo "you choose error";;
esac
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: