配置文件内的列需要依次添加
cat AutoDeployConf.conf
#application domain port target contextroot app_name package_path passwordfile
test domain9 4808 test test test /test.war /test_adminpassword.txt
脚本内容,执行方式./auto_deploy_glassfish.sh application
cat auto_deploy_glassfish.sh
#!/bin/bash
. /home/glassfishv4/app_list/glassfishv5_app_list.conf
. /home/glassfishv4/app_list/payara_app_list.conf
rtnCode=0
app_name_param=${1}
curr_host=hostname
echo ${app_name_param}
glassfishv5_asadmin='/home/glassfishv4/glassfish5/glassfish/bin/asadmin'
payara_asadmin='/home/glassfishv4/payara41/glassfish/bin/asadmin'
exec 3<&0 < /home/glassfishv4/AutoDeploy/AutoDeployConf.conf
while read LINE
do
echo "${LINE}" | grep "^#" > /dev/null 2>&1 && continue
[ "${LINE}" = "" ] || [ "${LINE}" = " " ] && continue
application=echo "${LINE}" | awk '{print $1}'
domain_name=echo "${LINE}" | awk '{print $2}'
port=echo "${LINE}" | awk '{print $3}'
target=echo "${LINE}" | awk '{print $4}'
contextroot=echo "${LINE}" | awk '{print $5}'
app_name=echo "${LINE}" | awk '{print $6}'
package_path=echo "${LINE}" | awk '{print $7}'
passwordfile=echo "${LINE}" | awk '{print $8}'
if [ "${application}" != "${app_name_param}" ]; then
continue;
fi
#done
#exec 0<&3 3<&-
if [[ "${glassfishv5_app_list}" =~ ${application} ]]; then
Undeploy
$glassfishv5_asadmin --passwordfile ${passwordfile} --host ${curr_host} --port ${port} undeploy --target ${target} ${app_name}
if [ ${?} -ne 0 ]; then
echo "Undeploy ${application} is failure."
rtnCode=1
exit ${rtnCode}
fi
Shutdown Cluster
if [ "${target}" == "myplm" ]; then
$glassfishv5_asadmin --passwordfile ${passwordfile} --host ${curr_host} --port ${port} stop-local-instance --node myplm --nodedir /home/glassfishv4/glassfish5/glassfish/nodes ${target}
if [ ${?} -ne 0 ]; then
echo "Stop myplm instance is failure"
rtnCode=1
fi
elif [ "${target}" != "server" ]; then
$glassfishv5_asadmin --passwordfile ${passwordfile} --host ${curr_host} --port ${port} stop-cluster ${target}
if [ ${?} -ne 0 ]; then
echo "Stop ${target} is failure"
rtnCode=1
fi
fi
Shutdown domain
$glassfishv5_asadmin stop-domain ${domain_name}
if [ ${?} -ne 0 ]; then
echo "Stop ${domain_name} is failure"
rtnCode=1
fi
Start domain
$glassfishv5_asadmin start-domain ${domain_name}
if [ ${?} -ne 0 ]; then
echo "Start ${domain_name} is failure"
rtnCode=1
fi
Start Cluster
if [ "${target}" == "myplm" ]; then
$glassfishv5_asadmin --passwordfile ${passwordfile} --host ${curr_host} --port ${port} start-local-instance --node myplm --nodedir /home/glassfishv4/glassfish5/glassfish/nodes ${target}
if [ ${?} -ne 0 ]; then
echo "Start myplm instance is failure"
rtnCode=1
fi
elif [ "${target}" != "server" ]; then
$glassfishv5_asadmin --passwordfile ${passwordfile} --host ${curr_host} --port ${port} start-cluster ${target}
if [ ${?} -ne 0 ]; then
echo "Start ${target} is failure"
rtnCode=1
fi
fi
Deploy
$glassfishv5_asadmin --passwordfile ${passwordfile} --host ${curr_host} --port ${port} deploy --name ${app_name} --contextroot ${contextroot} --target ${target} ${package_path}
if [ ${?} -ne 0 ]; then
echo "Deploy ${application} is failure"
rtnCode=1
exit ${rtnCode}
fi
elif [[ "${payara_app_list}" =~ ${app_name_param} ]]; then
$payara_asadmin --passwordfile ${passwordfile} --host ${curr_host} --port ${port} undeploy --target ${target} ${app_name}
if [ ${?} -ne 0 ]; then
echo "Undeploy ${application} is failure."
rtnCode=1
exit ${rtnCode}
fi
if [ "${target}" != "server" ]; then
$payara_asadmin --passwordfile ${passwordfile} --host ${curr_host} --port ${port} stop-cluster ${target}
if [ ${?} -ne 0 ]; then
echo "Stop ${target} is failure"
rtnCode=1
fi
fi
$payara_asadmin stop-domain ${domain_name}
if [ ${?} -ne 0 ]; then
echo "Stop ${domain_name} is failure"
rtnCode=1
fi
$payara_asadmin start-domain ${domain_name}
if [ ${?} -ne 0 ]; then
echo "Start ${domain_name} is failure"
rtnCode=1
fi
if [ "${target}" != "server" ]; then
$payara_asadmin --passwordfile ${passwordfile} --host ${curr_host} --port ${port} start-cluster ${target}
if [ ${?} -ne 0 ]; then
echo "Start ${target} is failure"
rtnCode=1
fi
fi
$payara_asadmin --passwordfile ${passwordfile} --host ${curr_host} --port ${port} deploy --name ${app_name} --contextroot ${contextroot} --target ${target} ${package_path}
if [ ${?} -ne 0 ]; then
echo "Deploy ${application} is failure"
rtnCode=1
exit ${rtnCode}
fi
else
echo "There is no the application."
fi
done
exec 0<&3 3<&-
exit ${rtnCode}
整个过程就是undeploy--stop cluster--stop domain--start domain--start cluster--deploy
具体语法可以在官网直接找到
将脚本信息及war位置配置在jenkins里即可实现自动部署