NO.103 Jenkins+Ant实现JDK、WebLogic、Domain批量安装(3)多版本JDK的选择安装

一、本节概述

由于公司项目繁多,不同的项目使用不同版本的JDK和WebLogic,因此在日常运维过程中,需要按需安装指定版本的JDK&WebLogic,因此本节先来说明下多版本JDK(JDK6、7、8)的选择安装,并以此掌握ant的必备补充包ant-contrib,我们可以利用它实现像 if else trycatch等扩展功能。

 

ant-contrib的下载地址:

https://sourceforge.net/projects/ant-contrib/files/ant-contrib/1.0b3/

很多年没更新了,下载这个ant-contrib-1.0b3-bin.zip即可。

下载后解压,将解压出的ant-contrib-1.0b3.jar以及lib目录下的jar包(lib下有4个),共5个jar包都放在D:\Program Files\apache-ant-1.9.13\lib下,可以将解压出的docs目录放在D:\Program Files\apache-ant-1.9.13目录下,便于先查看ant manual一样学习ant-contrib的各task。

 

二、本地准备工作

准备好各版本安装包 ,本地文件位置:

d:\tmp\inventory\jdk-6u45-linux-amd64.rpm;

d:\tmp\inventory\jdk-7u72-linux-x64.rpm;

d:\tmp\inventory\jdk-8u72-linux-x64.rpm;

其它不多说了,具体参见上一篇第二部分内容。

 

三、脚本及说明

在上一篇提到的参数文件d:\tmp\build_params.properties中增加各JDK rpm包文件名的变量定义。

变量定义的好处在于如果某一版本的JDK有了新版本,只需要该此处的变量定义即可。

JDK6.filename=jdk-6u45-linux-amd64.rpm

JDK7.filename=jdk-7u72-linux-x64.rpm

JDK8.filename=jdk-8u72-linux-x64.rpm

这次build.xml的内容变化较大,先贴一下:

<?xml version="1.0" ?>
<project>

	<!--Task definition for Ant-Contrib-->
	<taskdef resource="net/sf/antcontrib/antlib.xml" />

	<property file="build_params.properties" />
	
	<!-- Install JDK-->
	<target name="InstallJDK" >
		<if>
			<equals arg1="${installType}" arg2="872" trim="true" casesensitive="false" />
			<then>
				<echo>安装JDK872</echo>
				<antcall target="installJDK8" />
			</then>
			<elseif>
			  <equals arg1="${installType}" arg2="772" trim="true" casesensitive="false" />
			  <then>
				<echo>安装JDK772</echo>
				<antcall target="installJDK7" />
			  </then>
			</elseif>
			<else>
				<echo>安装JDK645</echo>
				<antcall target="installJDK6" />
			</else>
		</if>
	</target>	

	<!-- rpm方式安装JDK6 -->	
	<target name="installJDK6" >
	  <antcall target="installJDKByRpm">
	    <param name="file.fullPath" value="${inventory.dir}/${JDK6.filename}"/>
	  </antcall>
	</target>
	
	<!-- rpm方式安装JDK7 -->	
	<target name="installJDK7" >
	  <antcall target="installJDKByRpm">
	    <param name="file.fullPath" value="${inventory.dir}/${JDK7.filename}"/>
	  </antcall>
	</target>
	<!-- rpm方式安装JDK7 -->	
	<target name="installJDK8" >
	  <antcall target="installJDKByRpm">
	    <param name="file.fullPath" value="${inventory.dir}/${JDK8.filename}"/>
	  </antcall>
	</target>
	
	<target name="installJDKByRpm" >
	  <antcall target="scp">
	    <param name="server.user" value="${root.user}"/>
	    <param name="server.password" value="${root.password}"/>
	  </antcall>
	  <antcall target="sshByCmd">
	    <param name="server.user" value="${root.user}"/>
	    <param name="server.password" value="${root.password}"/>
	    <param name="command" value="cd ${upload.path};rpm -ivh  ${upload.filename}"/>
	  </antcall>
	</target>

	<target name="scp" >
	  <scp file="${file.fullPath}" todir="${server.user}:${server.password}@${server.ip}:${upload.path}/" trust="true"/>
	</target>

	<target name="sshByCmd" >
		<sshexec host="${server.ip}" username="${server.user}"  password="${server.password}"
         trust="true" command="${command}"/>
	</target>
	
	<target name="installAllJDK" depends="installJDK6,installJDK7,installJDK8" />

</project>

1. 首先注意这一句,很重要,没有它就无法使用ant-contrib的各种task了

<!--Task definition for Ant-Contrib-->

<taskdef resource="net/sf/antcontrib/antlib.xml" />

2. 有一个外部变量installType, 使用if elseif逻辑判读它的值,并进行对应的处理;

3.由于多个版本JDK的安装过程没有什么不同,因此每个版本的安装脚本很相似,就是安装包名不同,在前述脚本参数化的基础上,我们可以像Java一样对Ant Task进行封装,首先将scp和sshexec分别放到叫scp和sshByCmd的target中,并将rpm安装也封装为一个独立target:installJDKByRpm,这样做的好处可以在后面介绍Jenkins服务器与应用服务器互信时看到。

4.如果需要在一台服务器上安装多个JDK,可以调用target:installAllJDK,注意depends的用法和JDK的安装顺序,因为使用安装包安装JDK可以从低版本升级到高版本,反之不行。那么先装了高版本又想装低版本呢?卖个关子,下节再讲。

 

四、运行

运行

ant InstallJDK -DinstallType=JDK772

则将执行JDK7的安装~

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值