#!/bin/bash export work_dir=/home/jenkins/work_dir/uat-coms-123 username=user password=password name=xxx-service- coms_addr="ip1" api_addr="ip2" coms_user=root cd ${work_dir} function svn_update() { for i in $@ do cd ${work_dir} if [ -d "$i" ]; then cd $i local_revision=`/usr/bin/svn info |awk '/版本:/{i++;if(i<2){print $0}else{exit;}}'|cut -d' ' -f2` url=`/usr/bin/svn info|grep URL|cut -d' ' -f2` svn_revision=`/usr/bin/svn info ${url} |awk '/版本:/{i++;if(i<2){print $0}else{exit;}}'|cut -d' ' -f2` if [ $local_revision -lt $svn_revision ];then commit_people=`svn info ${url} |grep "最后修改的作者"|cut -d' ' -f2` commit_time=`svn info ${url} |grep "最后修改的时间"` echo "$i项目版本库有提交,现在开始更新本地库" echo "$i项目最后提交项目工作人员为: $commit_people" echo "$i项目${commit_time}" /usr/bin/svn up if [ $? -eq 0 ];then echo "更新成功" return 0 else echo "更新失败" return 1 fi else echo "本地已经是最新版本" return 2 fi else echo "该项目在服务器上不存在,将首次拉取代码" /usr/bin/svn --username $username --password $password co https://qf-dekins-05.quark.com/svn/coms/trunk/coms-common-parent/$i cd ${work_dir} return 3 fi done } function mvn_common_install() { for p in $@ do svn_update $p if [ $? -eq 0 -o $? -eq 3 ];then cd ${work_dir}/$p echo "开始编译$p" /data/maven-3.3.9/bin/mvn clean install -Denv=uat deploy if [ $? -eq 0 ];then echo "编译成功" cd ${work_dir} fi fi done } function mvn_service_install() { for p in $@ do cd ${work_dir} svn_update $p if [ $? -eq 0 -o $? -eq 3 ];then cd ${work_dir}/$p echo "开始编译$p" /data/maven-3.3.9/bin/mvn clean install -Denv=uat if [ $? -eq 0 ];then echo "编译成功" fi fi done } function pack_common() { mvn_common_install 公共包1 公共包2 公共包3... } function pack_service() { mvn_service_install $1 } function help_usage() { cat <<EOF 1:包名1 2:包名2 3:包名3 4:包名4 5:包名5 EOF } function transfer_coms_consumer() { consumer_path="/path" scp -r ${work_dir}/$1/target/{$1.jar,lib} comsadmin@${coms_addr}:${consumer_path}/$1 if [ $? -eq 0 ];then echo "代码发布成功" return 10 else return 11 fi } function transfer_coms_service() { service_path="/path" service_jar_name=`echo $1 |cut -d'-' -f3` scp -r ${work_dir}/$1/target/{$1.jar,lib} comsadmin@${coms_addr}:${consumer_path}/${service_jar_name} if [ $? -eq 0 ];then echo "代码发布成功" return 10 else return 11 fi } function transfer_coms_bkend() { bkend_path="path" scp -r ${work_dir}/$1/target/{$1.jar,lib} apiadmin@${api_addr}:${bkend_path} if [ $? -eq 0 ];then echo "代码发布成功" return 10 else return 11 fi } function restart_coms() { ssh comsadmin@${coms_addr} '/home/comsadmin/service.sh $1' } while true do help_usage declare -A dict dict=([1]="包名1" [2]="包名2" [3]="包名3" [4]="包名4" [5]="包名5") consumer_64=(包名1 包名2 包名3) service_64=(包名4 包名5) read -p "请输入需要更新的应用名称前面的ID号>:" program_id count=0 for key in $(echo ${!dict[*]}) do if [ "${program_id}" -eq $key ];then program_name=`echo ${dict[$key]}` if [[ "${consumer_64[@]}" =~ ${program_name} ]];then echo "开始更新${program_name}项目" if [ $count -eq 0 ];then pack_common fi pack_service ${program_name} sleep 2 echo "开始${program_name}发布代码" transfer_coms_consumer ${program_name} if [ $? -eq 10 ];then echo "代码更新完成,即将重启" restart_coms ${program_name} else echo "代码更新失败,请检查原因" fi let count+=1 elif [[ "${service_64[@]}" =~ ${program_name} ]];then echo "开始更新${program_name}项目" if [ $count -eq 0 ];then pack_common fi pack_service ${program_name} transfer_coms_service ${program_name} if [ $? -eq 10 ];then echo "代码更新完成,等待重启" restart_coms ${program_name} else echo "代码更新失败,请检查原因" fi let count+=1 else echo "开始更新${program_name}项目" if [ $count -eq 0 ];then pack_common fi pack_service ${program_name} transfer_coms_bkend ${program_name} if [ $? -eq 10 ];then echo "代码更新完成,等待重启" ssh apiadmin@${api_addr} '/home/apiadmin/coms/consumer/coms-consumer-bkend/startBkend.sh' else echo "代码更新失败,请检查原因" fi let count+=1 fi fi done done
自动打包发布项目脚本(svn)
猜你喜欢
转载自www.cnblogs.com/qinghe123/p/8990282.html
今日推荐
周排行