test 환경 에서 cvs 업데이트 코드, 구축 배치 등 을 자동 으로 완성 하여 배치 과정 을 간소화 합 니 다!

7821 단어 test
이전 글 에 서 는 maven profile 을 dev, test, pro 세 가지 환경 으로 나 누 는 방법 을 설명 하 였 으 며, test 환경 에 최신 코드 를 배치 하 는 데 편리 하도록 maven 과 셸 을 이용 하여 스 크 립 트 완성 코드 를 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 설정 과 셸 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:[email protected]:1401/TS-CLOUD</connection>
		<developerConnection>scm:cvs:pserver:ste-cloud:[email protected]: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

좋은 웹페이지 즐겨찾기