原理:两个svn,一个研发svn,用于研发时使用,一个发布svn用于产品发布。实现时把研发svn的内容编译打包,发布到发布svn。
脚本release.sh代码如下
base_dir=`dirname $0`
read_conf(){
dir=`dirname $0`
echo `cat $dir/release.conf |grep "^[^#]"|grep -w $1|tr -s "[\t ]" " "|awk -F"=" '{print $2}'`
}
echo BASEDIR=$base_dir
#源码目录
source_dir=$base_dir/source
#发布目录
release_dir=$base_dir/release
source_svn_url=`read_conf "source_svn_url"`
release_svn_url=`read_conf "release_svn_url"`
target_dir=`read_conf "target_dir"`
echo "SVN CONFIG"
echo "reource url="$source_svn_url
echo "release url="$release_svn_url
if [ ! -d $source_dir ]
then
echo "checkout source"
echo $source_svn_url $source_dir
svn=`svn co $source_svn_url $source_dir`
echo "checkout source over"
else
echo "update source"
svn up $source_dir|grep "^D"
fi
if [ ! -d $release_dir ]
then
echo "Checkout release"
svn=`svn co $release_svn_url $release_dir`
echo "Checkout release over"
else
echo "update release-source"
svn up ${release_dir}|grep "^D"
fi
echo "Building ..."
mvn -f $source_dir/pom.xml clean package
echo "Build over"
echo "Copy release"
echo "cp -rf "$source_dir"/target/"${target_dir}"/*" $release_dir
cp -rf $source_dir/target/${target_dir}/* $release_dir
echo "Copy Over"
cd $release_dir
pwd
submitList=`svn st |grep "^?"|awk '{print $2}'`
if [ -n "$submitList" ]
then
svn st|grep "^?"
echo -e "Whether to add all files?[Y/N]\c";
read submit
submit=`echo $submit`|tr -s "Y" "y"
if [ "$submit" == "Y" ] || [ "$submit" == "y" ]
then
svn add $submitList
fi
fi
echo "Check release status"
svn st
commitList=`svn st`
svn ci -m "submit release"
对应配置release.conf
source_svn_url=svn://develop_IP/A/server/trunk
release_svn_url=svn://release_IP/release/A/server
target_dir=A
题外话:
1、脚本中判断字符串长度是否为空,一定要用""引起来,否则会出错
如
if [ -n "$submitList" ]
2、mvn用于产品发布还是很方便,约定优于配置是个好东西!
分享到:
相关推荐
此文件为VS2012 项目发布的批处理脚本. 可用于自动化发布. 功能: 1. 从SVN上下载最新代码. 逻辑是:如果首次启动, 会创建文件夹, 从SVN上获取全部代码. 如果不是首次启动则只更新代码 2. 使用msbuild.exe 发布代码...
springboot自动化发布脚本,shell文件,针对服务器上使用。
项目自动发布脚本项目 宗旨: 通过简单的命令能自动发布应用程序到特定的服务器上。包括系统环境安装,更新版本库,编译,打包,分发,应用服务器的启停等。 目标: 1.命令简单 2.支持分布式发布 3.支持多样的应用...
需求:针对以上问题我们需要实现代码与脚本同步提交SVN版本管理,并且项目启动将自动检索执行需要升级的sql脚本并自动执行,以后开发发布脚本无需在群里或邮件中发送,如能按此规范执行将有利于提升工作效率。
docker项目自动git拉取自动发布shell脚本
linux脚本发布程序 发布步骤 打包 压缩 上传 解压 这些步骤进行发布
常用shell脚本, Dos攻击防范(自动屏蔽攻击IP).sh 一键部署等等 Linux系统发送告警脚本.sh MySQL数据库备份单循环.sh MySQL数据库备份多循环.sh nginx 访问访问日志按天切割.sh ...自动发布PHP项目脚本.sh
服务器 使用脚本打包编译java项目 包含了使用svn下载代码,ant编译打包,发布 等所有的过程
1.资源包内含有源码和数据库脚本,项目经过严格调试,100%能运行。 2.项目运行依赖于JDK、IDEA、Tomcat、MySQL等,需要安装和配置, 参考B站视频合集(项目运行环境搭建 ...
通用发布脚本:适用于使用git、svn等版本控制工具进行管理的类似php、python等语言开发的项目
一个node实现队列执行的自定义处理项目发布部署命令式cli脚本工具
网盘文件永久链接 18个Linux Shell脚本经典案例(1-18) 脚本 Dos攻击防范(自动屏蔽攻击IP) Linux系统发送告警脚本 MySQL数据库备份单循环 MySQL数据库备份多循环 nginx 访问访问日志按天切割 ...自动发布PHP项目脚本
jQuery项目发布自动化 该脚本可自动执行所有jQuery项目的发布。 它旨在创建项目之间的一致性,并减轻维护单个发布脚本的负担。 创建发布 创建发行版就像克隆该存储库并告诉脚本要使用哪个项目一样简单。 为了确保...
18个Linux Shell脚本经典案例合集,内含: Dos攻击防范(自动屏蔽攻击IP).sh Linux系统发送告警脚本.sh MySQL数据库备份单循环.sh MySQL数据库备份多循环.sh nginx 访问访问日志按天切割.sh ...自动发布PHP项目脚本.sh
本脚本用python实现java项目的一键发布,装好python环境、paramiko模块修改自己的服务器账号密码,项目地址等即可完成一键发布上传实现。有日志输出。
包含:项目源码、数据库脚本、软件工具、项目说明等,该项目可以直接作为毕设使用。 项目都经过严格调试,确保可以运行! 二、技术实现 后台框架:JSP、Servlet、JDBC 数据库:MySQL 开发环境:JDK、Eclipse、...
包含:项目源码、数据库脚本、软件工具、项目说明等,该项目可以直接作为毕设使用。 项目都经过严格调试,确保可以运行! 二、技术实现 后台框架:Spring、SpringMVC、MyBatis 数据库:MySQL 开发环境:JDK、...
包含:项目源码、数据库脚本等,该项目可以直接作为bishe使用。 项目都经过严格调试,确保可以运行! 二、技术实现 后端:spring+springmvc+mybatis 开发工具:eclipse、Navicat 运行环境:jdk1.8、Tomcat8;数据库...
包含:项目源码、数据库脚本、软件工具、项目说明等,该项目可以直接作为毕设使用。 项目都经过严格调试,确保可以运行! 二、技术实现 后台框架:Spring、SpringMVC、MyBatis 数据库:MySQL 开发环境:JDK、...
该脚本经过本人查询资料得来,主要是在linux下使用shell脚本对oracle数据库中无效的对象进行自动编译。适用于项目发布和数据库迁移后对无效视图进行编译。