`
pcpig
  • 浏览: 90920 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

项目发布脚本

阅读更多
原理:两个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用于产品发布还是很方便,约定优于配置是个好东西!
分享到:
评论
1 楼 pcpig 2013-09-05  
基于ant的项目发布

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 ..."
ant -f $source_dir/build_release.xml
echo "Build over"

echo "Copy release"
echo "cp -rf "$source_dir"/deploy/"${target_dir}"/*" $release_dir
cp -rf $source_dir/deploy/* $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" 

相关推荐

    python实现java项目一键发布到服务器

    本脚本用python实现java项目的一键发布,装好python环境、paramiko模块修改自己的服务器账号密码,项目地址等即可完成一键发布上传实现。有日志输出。

    sringboot项目自动化发布shell脚本

    总的来说,`springboot项目自动化发布shell脚本`是DevOps实践中一个基础但重要的环节,它能帮助开发团队高效地管理软件生命周期,提高软件的迭代速度和质量。通过学习和理解这些脚本的工作原理,开发者可以更好地...

    vs2012网站发布脚本

    此文件为VS2012 项目发布的批处理脚本. 可用于自动化发布. 功能: 1. 从SVN上下载最新代码. 逻辑是:如果首次启动, 会创建文件夹, 从SVN上获取全部代码. 如果不是首次启动则只更新代码 2. 使用msbuild.exe 发布代码...

    springboot项目启动bat脚本

    在Windows环境下,Spring Boot项目通常以jar包的形式发布,以便于部署和运行。"springboot项目启动bat脚本"指的是一个批处理(.bat)文件,用于自动化启动Spring Boot应用程序的过程。这种脚本大大简化了操作,使得...

    pubshell项目自动发布脚本项目

    项目自动发布脚本项目 宗旨: 通过简单的命令能自动发布应用程序到特定的服务器上。包括系统环境安装,更新版本库,编译,打包,分发,应用服务器的启停等。 目标: 1.命令简单 2.支持分布式发布 3.支持多样的应用...

    Vue自动构建发布脚本的方法示例

    本文将介绍如何利用`cross-env`和`scp2`这两个插件来创建这样一个跨平台的Vue项目发布脚本。 首先,`cross-env`是一个用于处理跨平台环境变量的Node.js包。在开发过程中,我们经常需要根据不同的环境(如开发环境、...

    手把手图解,详解Jenkins ,svn ,maven 项目持续集成 SHELL 脚本

    4. **在持续集成中的作用**:SHELL脚本可以用来自动化部署过程,例如打包、发布、启动服务等。 **持续集成实践:** 1. **版本控制集成**:Jenkins与svn配合,实现代码提交后自动触发构建。 2. **构建自动化**:...

    shell写的编译发布脚本,重启服务器

    标题中的“shell写的编译发布脚本,重启服务器”指的是使用Shell脚本来自动化软件的编译、部署以及服务器的重启过程。在IT行业中,这样的脚本对于提高开发和运维效率至关重要。Shell脚本是Unix/Linux操作系统中的一种...

    windows git 批量 clone 脚本

    这个脚本可能包含对每个项目执行`git push`或者使用`git flow release finish`等命令来完成版本发布。 `install-all.bat`可能用于批量安装与Git相关的软件或插件。这可能涉及到运行`git bash`的安装程序,或者安装...

    Go-release.sh一个shell脚本用于在GitHub上构建和发布Go程序

    这个脚本是开发者工具箱中的一个重要组成部分,尤其对于那些频繁进行版本迭代和发布的项目。 在`Go-release.sh`脚本中,通常包含以下关键步骤: 1. **设置环境**:首先,脚本会检查必要的环境变量是否已设置,如`...

    docker项目自动git拉取自动发布shell脚本

    docker项目自动git拉取自动发布shell脚本

    基于Python与Shell的SVN项目自动化发布与重启脚本设计源码

    该方案为基于Python与Shell编写的SVN项目自动化发布与重启脚本,包含38个文件,涵盖16个Shell脚本、6个GZIP压缩文件、3个Python脚本、3个配置文件、2个BZIP2压缩文件、2个ZIP压缩文件、1个授权许可文件、1个INI文件...

    服务器 使用脚本打包编译java项目

    本文将详细介绍如何在服务器上利用脚本打包并编译Java项目,涵盖了从版本控制到最终发布的全过程。 首先,我们需要理解整个流程涉及的关键工具和技术: 1. **版本控制**:在描述中提到了`svn`,这是一款广泛使用的...

    杭州朗慧witask<互动问答系统>项目数据库脚本

    《杭州朗慧witask&lt;互动问答系统&gt;项目数据库脚本详解》 在信息技术领域,数据库是存储和管理信息的核心工具,而脚本则是操作数据库的关键手段。本文将深入解析“杭州朗慧witask&lt;互动问答系统&gt;项目”的数据库脚本,...

    基于groovy实现 java脚本动态编译、部署、发布;可以通过脚本直接调用dubbo接口.zip

    本文将深入探讨如何基于Groovy实现Java脚本的动态编译、部署和发布,并且介绍如何通过Groovy脚本直接调用Dubbo接口,从而提高开发效率和灵活性。 Groovy是一种基于Java平台的强大的动态编程语言,它具有简洁的语法...

    swift-AutoPackage-iOS项目自动打包脚本

    2. **代码签名**:在打包过程中,脚本会自动处理代码签名,使用正确的开发或发布证书和 provisioning profile,确保应用可以在目标设备上运行。 3. **IPA打包**:脚本会生成IPA文件,这是iOS应用的分发格式。IPA...

    Python-deploysh通用发布脚本

    【Python-deploysh通用发布脚本】是一种自动化部署解决方案,主要针对使用Git或SVN等版本控制系统管理的项目,如PHP、Python等编程语言。它旨在简化开发过程中的部署环节,提高效率,确保代码更新的一致性和可靠性。...

    18个Linux Shell脚本经典案例视频.zip

    网盘文件永久链接 18个Linux Shell脚本经典案例(1-18) 脚本 Dos攻击防范(自动屏蔽攻击IP) Linux系统发送告警脚本 MySQL数据库备份单循环 MySQL数据库备份多循环 nginx 访问访问日志按天切割 ...自动发布PHP项目脚本

    常用shell 脚本,dos攻击防范,

    常用shell脚本, Dos攻击防范(自动屏蔽攻击IP).sh 一键部署等等 Linux系统发送告警脚本.sh MySQL数据库备份单循环.sh MySQL数据库备份多循环.sh nginx 访问访问日志按天切割.sh ...自动发布PHP项目脚本.sh

    官方Devexpress 10.1.4 编译脚本

    编译脚本会遍历这些子项目,逐个进行编译。 4. **编译指令**:脚本会调用编译器,并传递适当的参数,比如优化级别、调试信息、多线程支持等。 5. **资源处理**:UI组件可能包含图像、字体等资源,脚本会处理这些...

Global site tag (gtag.js) - Google Analytics