linux shell编程学习--实例讲解

定义

以上都是基本语法,下面我们将通过一个具体的例子,来实践讲解shell脚本的使用

实例一 jenkins本地自动化部署脚本

说明:此脚本实现了通过jenkins,从git上获取tomcat,本地maven打包服务,发布到tomcat中,然后复制tomcat到指定目录下,检测原有服务,并重启tomcat服务,并通过curl命令测试服务是否已经启动成功

#!/bin/sh -

set -x


targetName=${project_name}
targetWar=
base_tomcat=
port=${port}
tomcat_name="tomcat-${project_name}-${port}"
tomcat_target=

#更新构建id,否则如果jenkins和tomcat在同一服务器的话,jenkins执行完成后,会杀死所有进程
export BUILD_ID=tomcat_deploy_id_${tomcat_name}

workspace=`find /jenkins/   -name  ${JOB_NAME}`

echo "$M2_REPO" 

if [ -d ${workspace} ]
then 
    echo "workspace is exists ${workspace} \n" > /dev/null

    cd ${workspace}

    mvn clean install -Dmaven.test.skip=true 
    if [ $? -eq 0 ]
    then
        echo "本地打包${targetName}完成 \n" > /dev/null
    else
        echo  "本地打包${targetName}失败 \n" > /dev/null
        exit 1
    fi
else 
    echo "workspace is not exists ${workspace} \n" > /dev/null
fi


targetWar=`find  /apps/mvn-space  -name $targetName*.war`


if [ -n "${targetWar}" ]
then 
    echo "echo ${targetWar} build success, start tomcat "
else
    echo "echo ${targetWar} is not exists,部署失败\n"
    exit 1
fi



# # # 清除空间内的basetomcat
rm -rf tomcat-base
#捡出tomcat
git clone [email protected]:tlgj704/tomcat-base.git
# #
base_tomcat=`find /jenkins/ -name tomcat-base`

if [ -d "${base_tomcat}" ]
then
    echo "base_tomcat is ${base_tomcat}"
else
    echo "未找到base_tomcat,部署失败"
    exist 1
fi
#将war拷贝到base-tomcat中
cp ${targetWar}  ${base_tomcat}/webapps/${targetName}.war

pushd ${base_tomcat}/conf/

#更新tomcat端口
`sed -i "s/8080/${port}/g" server.xml`

pushd 

#查找原有tomcat是否在运行
tomcat_target=`find /apps/ -name ${tomcat_name}`

if [  -d "${tomcat_target}" ]
then 
    #找到旧tomcat,将会先杀4死旧服务
    echo "${tomcat_name} arealy  exists ,will stop ,and remove \n"

    #查找原有服务
    oldPid=`lsof -i:${port} | grep java |awk -F " " '{ print $2}' `

    #如果原服务存在,先杀死原服务
    if [ -n "${oldPid}" ]
        then
            `kill -9 "${oldPid}"`
        else
            echo "old pid is null\n"
        fi

    rm -rf ${tomcat_target}
    
else
    #没找到旧tomcat,将会创建新服务
    echo "${tomcat_name}  not exist,create new tomcat\n"
fi

cp -r ${base_tomcat}  /apps/${tomcat_name}

#等待10秒,等待复制完成
sleep 10

#启动服务
sh /apps/${tomcat_name}/bin/startup.sh 


#删除临时tomcat
rm -rf ${base_tomcat}

echo "部署工程${JOB_NAME}完成"

#等待10秒,等待复制完成
sleep 10

exit 0


实例二 jenkins远程自动自动化部署脚本

。。。

你可能感兴趣的:(linux shell编程学习--实例讲解)