jenkins远程部署play framework项目时遇到的问题及解决办法

12 篇文章 0 订阅

这篇不讲解如何用Jenkins进行远程部署和远程启动项目,只是讲解遇到的问题。

最近公司要求让我把一个直播的项目,利用Jenkins来实现自动化部署。
项目目录结构是这样(项目根目录weblive-test/):
|—app
|—conf
|—lib
|—public
|—precompiled(使用play precompile命令生成出来的)

问题一、使用tar进行打包压缩。

该问题很简单,如果是打包该目录下所有的文件,使用以下:

tar -czf weblive-test.tar.gz *
又因为项目的部署,并不是把目录下的所有文件都进行远程部署。
比如:lib文件夹、conf文件夹(除里面routes文件)。
因为这些文件并不是经常要更改的,一般在搭建项目框架时,就基本确了。
就算后期有需要更改的,可以单独把文件上传到远程服务器中。

这也就意味着我打包时,需要去指定打包哪些文件。
tar -czf weblive-test.tar.gz ./app ./conf/routes ./precompiled ./public
这里给出我构建时完整的shell脚本
#!/bin/bash
export PATH=/opt/play-1.2.7:$PATH
#获得当前目录
cur=$(pwd)
echo "pwd:"${cur}
echo `date +%Y%m%d`
#编译
play precompile

#进行打包和压缩,方便传输
rm -rf weblive-test.tar.gz
tar -czf weblive-test.tar.gz ./app ./conf/routes ./precompiled ./public

关于tar命令的教程可以参考:

tar命令教程> http://www.ilanni.com/?p=7191

项目备份

公司要求,每次远程部署时,要保存近期的项目。
比如:今天是11月1号,那么远程部署时,保存今天的备份,把昨天的备份删除,以免自动化备份过多,占空间。
删除备份包代码如下:
#获取当前时间
currday=`date +%Y%m%d`
rm -rf `ls | grep "weblive-test-20" | grep -v weblive-test-$currday`
上面代码意思是,先获取当前时间(因为我备份项目会加上备份时间);
再去查找`"weblive-test-20"`,开头的文件,这里的20,是指年的意思;
就是说它可以配20开头的年份,比如2016年、2020年、2030年。
`grep -v weblive-test-$currday`这句的意思是 参数-v,是取反的意思。
整句话的意思就是,删除weblive-test项目中20开头的备份文件,但是不删除今天的备份。

这里写图片描述

图片中也有.bak结尾的备份,但是公司要求,显示备份时间,所以我改成红色标记的那种。

判断文件夹或是文件是否存在

#创建最新的备份包
webfile=${cur}/weblive-test-$currday
if [ ! -d $webfile ]; then
echo "不存在":$webfile
#备份
cp -r weblive-test weblive-test-$currday
fi
这里需要注意的地方就是if[],中括号里的前后空格不是多余的,一定要写。
参数 -d 是用来判断文件夹是否存在
参数 -f 是用来判断文件是否存在

清空远程项目目录

#清空weblive-test里面的文件
#rm -rf weblive-test/*
只是清空目录,目录本身不删除,因为之前tar打包的并不是所有的文件,
所以,该目录其实是不能清空的,比如里面的lib、conf、文件夹是不能删除。
所以这段代码我是注释掉的。

解压缩

#解压缩包
tar -xf weblive-test.tar.gz -C weblive-test/
#删除压缩包
rm -rf weblive-test.tar.gz
上面给过参考链接了,这里说明下,tar解压时,是可以指定解压目录的,只不过要先创建才行。
解压gzip压缩包和bzip2压缩包,都可以使用tar -xf命令来解压。
删除没什么好讲解的!
可以参考

shell中删除命令使用> http://blog.csdn.net/taiyang1987912/article/details/41488395#t7

项目的启动

cd /home/webuser/gogoal_platform/weblive-test/
echo "pwd:"`pwd`
cp /dev/null nohup.out
nohup ./weblive-test.sh

weblive-test.sh脚本的内容:

#!/bin/bash
export PATH=~/play-1.2.7:$PATH
play1 stop
play1 start
公司使用的是play framework框架。所以启动项目也是使用play命令,
这里我使用的是play1,是因为公司架构师把它改造了。
这里要重点强调下:经过我多次尝试,如果启动项目的命令,直接写到Jenkins的脚本里,
项目启动不了,非要我在远程服务器里写好脚本后,再到Jenkins里面去调取,就可以啦。
nohup,是后台启动的意思。要是没有加这个的话,项目也启动不了。

下面给出完整构建后操作的脚本

#!/bin/bash

export PATH=~/play-1.2.7:$PATH
echo "构建后的路径pwd:"`pwd`
cd /home/webuser/gogoal_platform/
cur=$(pwd)
echo "pwd:"${cur}
currday=`date +%Y%m%d`

#删除weblive-test的备份包
rm -rf `ls | grep "weblive-test-201" | grep -v weblive-test-$currday`

#创建最新的备份包
webfile=${cur}/weblive-test-$currday
if [ ! -d $webfile ]; then
echo "不存在":$webfile
cp -r weblive-test weblive-test-$currday
fi
#清空weblive-test里面的文件
#rm -rf weblive-test/*
#解压缩包
tar -xf weblive-test.tar.gz -C weblive-test/
#删除压缩包
rm -rf weblive-test.tar.gz
cd /home/webuser/gogoal_platform/weblive-test/
echo "pwd:"`pwd`
cp /dev/null nohup.out
nohup ./weblive-test.sh
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山鬼谣me

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值