`
Willam2004
  • 浏览: 86902 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

一个自动化打包上传的简单shell工具

 
阅读更多

开发完成之后,需要将本地的环境进行打包,并部署到测试环境,一般需要经过这几个步骤, 1.mvn install 2.执行make-rpm.sh脚本 3.执行scp将本地的rpm包拷贝到测试服务器中。每次的敲代码也比较人肉,所以写了一个shell脚本,将这几部串起来。因为考虑到有些时候,我们其中一步失败,而不想重头在来,所以脚本我支持通过1,2,3的数字进行选择,具体看代码吧。

 

 

 

#!/bin/bash
#install

command=$1
username=$2
host=$3



function info(){
	echo 'use ./deploy.sh command [username] [host]'
	echo 'command:'
	echo '0  -- exec all action,contains:install makeRpm upload'
	echo '1  -- exec install'
	echo '2  -- exec makeRpm'
	echo '3  -- exec upload,the username and host only affect this action.'
}

function all(){
	install 
	makeRpm
	upload
}

function install(){
	echo 'mvn install'
	mvn clean install -Denv=release -Dmaven.test.skip=true >>/dev/null
}

function makeRpm(){
	echo 'make-rpm,please make u rpm version is 4.4.x'
	./make-rpm.sh>>/dev/null
}

function upload(){
	echo 'upload the rpm to server'
	if [ -z $username ];then
		username='xxx'
	fi
	if [ -z $host ];then
		host='xx.xx.xx.xx'
	fi
	scp ./target/rpm/RPMS/noarch/*.rpm $username@$host:/home/$username/ >>/dev/null
}

#start execute
info
echo 'deploy start'
if [ -z $command -o $command = 0 ];then  #这里面-o是或的关系,-a是and关系
		all
	elif [ $command = 1 ];then
		install
	elif [ $command = 2 ];then
		makeRpm	
	elif [ $command = 3 ];then
		upload	
fi

echo 'deploy success!'

这个脚本的不好之处,就是在上传的时候因为采用了scp的方式,需要手动输入密码,后续考虑使用expert的方式,让密码自动输入,这样就可以让脚本自动执行,让人休息了!

分享到:
评论

相关推荐

    iOS自动打包脚本,具有打包、重签名、自动上传及发邮件功能 基于Python开发+源代码+文档说明

    这是一个用于自动打包的Python脚本,可以直接打包ipa并生成对应的plist,然后使用企业证书进行重签名,并上传指定的七牛服务器。这所有的动作只需要在终端敲入一行命令即可解决。 ###功能流程说明 `打包ipa`-->`重...

    iOS自动打包脚本

    最后选择了1,也就是当前的版本作为以后的自动打包及上传的工具。 在作者原版本的基础上,我添加了根目录设置(支持自动识别根目录及外部项目绝对路径设置,这样当前的脚本也可以脱离项目而存在且可以多个项目共享...

    新版Android开发教程.rar

    也有分析认为,谷歌并不想做一个简单的手机终端制造商或者软件平台开发商,而意在一统传统互联网和 移 动互联网。----------------------------------- Android 编程基础 4 Android Android Android Android 手机新...

    Android 开发技巧

    9.86、ANDROID自动化测试初探 324 9.86.1、捕获Activity上的Element 324 9.86.2、Hierarchyviewer 捕获Element的 328 9.86.3、架构实现 330 9.86.4、模拟键盘鼠标事件(Socket+Instrumentation实现) 332 9.86.5、再...

    Android开发资料合集-World版!

    9.86、ANDROID自动化测试初探 324 9.86.1、捕获Activity上的Element 324 9.86.2、Hierarchyviewer 捕获Element的 328 9.86.3、架构实现 330 9.86.4、模拟键盘鼠标事件(Socket+Instrumentation实现) 332 9.86.5、再...

    springboot参考指南

    作为一个打包后的应用运行 iii. 19.3. 使用Maven插件运行 iv. 19.4. 使用Gradle插件运行 v. 19.5. 热交换 viii. 20. 打包用于生产的应用程序 ix. 21. 接下来阅读什么 5. IV. Spring Boot特性 i. 22. ...

    白金远控2009年可用版

    1.改用xtreme界面库,界面美化,增加一些说明提示,控制端使用静态库编译到一个exe 2.*增加连接密码功能 3.*服务端卸载时进行特殊处理,从而在共享服务中可以支持完全自定义dll路径 4.修正首列IP不能排序的bug 5....

    Linux指令一周通 (技术图书大系).azw3

    4.36 uucp 指令:将特定文件复制到另一个特定系统 4.37 uulog指令:显示uucp记录信息 4.38 uuname指令:显示uucp远端主机 4.39 uustat指令:显示uucp状态 4.40 uux指令:在远端的uucp主机上运行指令 4.41 wall指令:...

    datanews-rig-demo:建立数据新闻台的示范项目

    我试图使事情尽可能简单和最少,主要是使用Github和AWS。 伪计划 建立美国疫苗接种数据的基本图。 可能性包括: 抓取美国疫苗接种数据 使用mapshaper制作美国地图 根据疫苗数据对颜色进行分类 制作州标签 仅使用...

    delphi 开发经验技巧宝典源码

    0237 如何实现一个应用程序只能打开一个进程 158 7.4 其他数据处理技术 159 0238 对计算结果四舍五入 159 0239 获取一个字符的ASCII值 159 0240 判断字符串中是否有文字符 160 0241 如何从字符串中提取...

    delphi 开发经验技巧宝典源码06

    0237 如何实现一个应用程序只能打开一个进程 158 7.4 其他数据处理技术 159 0238 对计算结果四舍五入 159 0239 获取一个字符的ASCII值 159 0240 判断字符串中是否有文字符 160 0241 如何从字符串中提取...

Global site tag (gtag.js) - Google Analytics