1. 程式人生 > >NO.105 Jenkins+Ant實現JDK、WebLogic、Domain批量安裝(5)批量執行的ANT指令碼

NO.105 Jenkins+Ant實現JDK、WebLogic、Domain批量安裝(5)批量執行的ANT指令碼

    所謂自動化安裝,最大的價值就是批量執行操作。今天講一下ant中批量的實現。

    批量安裝,即在多個伺服器安裝。本文預設所有伺服器環境一致,即作業系統版本、使用者名稱密碼,完全一樣。

    那麼對於多伺服器安裝JDK來講,多個伺服器的IP便是引數。這裡,我們使用英文逗號作為各IP的分割符。

    按慣例,我們先把引數在d:\tmp\build_params.properties進行定義。

server.ips=192.168.1.0,192.168.1.1,192.168.1.2

那麼在build.xml如何解析這個server.ips呢?我們使用foreach方法,指令碼如下:

<!-- 多伺服器安裝JDK -->
<target name="foreach_installJDK">  
    <foreach list="${server.ips}" target="installJDK" param="server.ip" delimiter=",">  
    </foreach>
</target>

<!-- 這裡簡單示意下拆分後的IP,JDK的安裝指令碼參見前幾節內容-->
<target name="installJDK">  
    <echo message="${server.ip}" />
</target>

如果是兩個引數呢?我們可以定義英文冒號作為二級分割符,下面是兩個引數的例子:

server.ips_ports=192.168.1.0:7001,192.168.1.1:8001,192.168.1.2:9001
<target name="foreach_server">  
    <foreach list="${server.ips_ports}" target="A" param="server.ip_port" delimiter=",">  
    </foreach>
</target>

<target name="A" >
	<echo message="${server.ip_port}" />
	<propertyregex property="server.ip" input="${server.ip_port}"  regexp="(.*)(\:)(.*)" select="\1" casesensitive="false" />
	<propertyregex property="server.port" input="${server.ip_port}"  regexp="(.*)(\:)(.*)" select="\3" casesensitive="false" />
	<antcall target="B"/>
</target>

<target name="B" >
	<echo message="${server.ipt}" />
	<echo message="${server.port}" />
</target>

    大家可以試著寫一寫三個引數的情況的指令碼~

    今天先到這兒啦。