原理:两个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用于产品发布还是很方便,约定优于配置是个好东西!
分享到:
相关推荐
本脚本用python实现java项目的一键发布,装好python环境、paramiko模块修改自己的服务器账号密码,项目地址等即可完成一键发布上传实现。有日志输出。
总的来说,`springboot项目自动化发布shell脚本`是DevOps实践中一个基础但重要的环节,它能帮助开发团队高效地管理软件生命周期,提高软件的迭代速度和质量。通过学习和理解这些脚本的工作原理,开发者可以更好地...
此文件为VS2012 项目发布的批处理脚本. 可用于自动化发布. 功能: 1. 从SVN上下载最新代码. 逻辑是:如果首次启动, 会创建文件夹, 从SVN上获取全部代码. 如果不是首次启动则只更新代码 2. 使用msbuild.exe 发布代码...
在Windows环境下,Spring Boot项目通常以jar包的形式发布,以便于部署和运行。"springboot项目启动bat脚本"指的是一个批处理(.bat)文件,用于自动化启动Spring Boot应用程序的过程。这种脚本大大简化了操作,使得...
项目自动发布脚本项目 宗旨: 通过简单的命令能自动发布应用程序到特定的服务器上。包括系统环境安装,更新版本库,编译,打包,分发,应用服务器的启停等。 目标: 1.命令简单 2.支持分布式发布 3.支持多样的应用...
本文将介绍如何利用`cross-env`和`scp2`这两个插件来创建这样一个跨平台的Vue项目发布脚本。 首先,`cross-env`是一个用于处理跨平台环境变量的Node.js包。在开发过程中,我们经常需要根据不同的环境(如开发环境、...
4. **在持续集成中的作用**:SHELL脚本可以用来自动化部署过程,例如打包、发布、启动服务等。 **持续集成实践:** 1. **版本控制集成**:Jenkins与svn配合,实现代码提交后自动触发构建。 2. **构建自动化**:...
标题中的“shell写的编译发布脚本,重启服务器”指的是使用Shell脚本来自动化软件的编译、部署以及服务器的重启过程。在IT行业中,这样的脚本对于提高开发和运维效率至关重要。Shell脚本是Unix/Linux操作系统中的一种...
这个脚本可能包含对每个项目执行`git push`或者使用`git flow release finish`等命令来完成版本发布。 `install-all.bat`可能用于批量安装与Git相关的软件或插件。这可能涉及到运行`git bash`的安装程序,或者安装...
这个脚本是开发者工具箱中的一个重要组成部分,尤其对于那些频繁进行版本迭代和发布的项目。 在`Go-release.sh`脚本中,通常包含以下关键步骤: 1. **设置环境**:首先,脚本会检查必要的环境变量是否已设置,如`...
docker项目自动git拉取自动发布shell脚本
该方案为基于Python与Shell编写的SVN项目自动化发布与重启脚本,包含38个文件,涵盖16个Shell脚本、6个GZIP压缩文件、3个Python脚本、3个配置文件、2个BZIP2压缩文件、2个ZIP压缩文件、1个授权许可文件、1个INI文件...
本文将详细介绍如何在服务器上利用脚本打包并编译Java项目,涵盖了从版本控制到最终发布的全过程。 首先,我们需要理解整个流程涉及的关键工具和技术: 1. **版本控制**:在描述中提到了`svn`,这是一款广泛使用的...
《杭州朗慧witask<互动问答系统>项目数据库脚本详解》 在信息技术领域,数据库是存储和管理信息的核心工具,而脚本则是操作数据库的关键手段。本文将深入解析“杭州朗慧witask<互动问答系统>项目”的数据库脚本,...
本文将深入探讨如何基于Groovy实现Java脚本的动态编译、部署和发布,并且介绍如何通过Groovy脚本直接调用Dubbo接口,从而提高开发效率和灵活性。 Groovy是一种基于Java平台的强大的动态编程语言,它具有简洁的语法...
2. **代码签名**:在打包过程中,脚本会自动处理代码签名,使用正确的开发或发布证书和 provisioning profile,确保应用可以在目标设备上运行。 3. **IPA打包**:脚本会生成IPA文件,这是iOS应用的分发格式。IPA...
【Python-deploysh通用发布脚本】是一种自动化部署解决方案,主要针对使用Git或SVN等版本控制系统管理的项目,如PHP、Python等编程语言。它旨在简化开发过程中的部署环节,提高效率,确保代码更新的一致性和可靠性。...
网盘文件永久链接 18个Linux Shell脚本经典案例(1-18) 脚本 Dos攻击防范(自动屏蔽攻击IP) Linux系统发送告警脚本 MySQL数据库备份单循环 MySQL数据库备份多循环 nginx 访问访问日志按天切割 ...自动发布PHP项目脚本
常用shell脚本, Dos攻击防范(自动屏蔽攻击IP).sh 一键部署等等 Linux系统发送告警脚本.sh MySQL数据库备份单循环.sh MySQL数据库备份多循环.sh nginx 访问访问日志按天切割.sh ...自动发布PHP项目脚本.sh
编译脚本会遍历这些子项目,逐个进行编译。 4. **编译指令**:脚本会调用编译器,并传递适当的参数,比如优化级别、调试信息、多线程支持等。 5. **资源处理**:UI组件可能包含图像、字体等资源,脚本会处理这些...