一、发布springboot项目步骤:
1、进入项目目录,拉取最新代码
2、使用mvn打包项目,将打包好的jar复制到运行目录
3、进入运行目录,先关闭之前运行的项目,启动项目和追加日志
二、脚本实现
ver版本号,srcRoot项目目录,components项目名,url运行目录,serviceports端口号
if [ -z $string ]表示如果string 为空的判断
java -Dfile.encoding=UTF-8 -Xms512m -Xmx512m -jar 设置编码和最小最大堆空间,也可以不用设置
> nohup.out 2>&1 &将标准错误输出也重定向到标准输出指向的文件中
>表示覆盖式重定向。正常输出是把内容输出到显示器上,重定向是把内容输出到文件中
2是标准错误输出,1是标准输出
创建.sh文件编写保存,使用shmod 777修改权限,用 ./filename.sh运行
如果想要使用动态取参数的方式启动,将参数改为ver=$1,components=$2的方式,执行脚本命令时在后面带上参数即可
#!/bin/sh
#must have a value is param
ver="200430"
srcRoot="/root/WorkSpace/"
components="test"
url="/root/RunSpace"
seviceports="8080"
#param is Info
echo "Start to build backend components... Version=${ver}"
echo "Build components parent path ...SrcRoot=${srcRoot}"
echo "Build service Name ...Components=${components}"
echo "Build service start path ...Url=${url}"
echo "Build service port ...Seviceports=${seviceports}"
cd ${srcRoot}/${components}
echo "Pull source code from git..."
git pull
echo "Building ${components} start..."
status=`mvn clean install -DskipTests | grep "BUILD SUCCESS"`
echo "${components} build completed: ${status}"
if [ -z "${status}" ]; then
echo "Exit on error!"
exit 1
fi
echo "Start to kill java pid... version=${ver}"
p="${seviceports}"
echo "Kill port=${p} ..."
pid=`lsof -nP -iTCP:${p} |grep LISTEN|awk '{print $2}'`
kill -9 $pid
echo "Start to copy JAR files... version=${ver}"
urls="${url}/${components}/"
cp -f "${srcRoot}/${components}/target/${components}-${ver}.jar" "${urls}"
echo "Start to deploy JAR files... ${urls}${components}-${ver}.jar"
cd "${urls}"
>nohup.out
java -Dfile.encoding=UTF-8 -Xms512m -Xmx512m -jar ${urls}${components}-${ver}.jar > nohup.out 2>&1 &
echo "Deploy ${urls}${components}-${ver}.jar completed. "
三、shell编程
if [ expression ] then 表达式结果为真,则返回0,if把0值引向then
if [ a = b ] ;then
echo equal
else
echo no equal
fi
- 文件表达式
if [ -f file ] 如果文件存在
if [ -d ... ] 如果目录存在
if [ -s file ] 如果文件存在且非空
if [ -r file ] 如果文件存在且可读
if [ -w file ] 如果文件存在且可写
if [ -x file ] 如果文件存在且可执行
- 整数变量表达式
if [ int1 -eq int2 ] 如果int1等于int2
if [ int1 -ne int2 ] 如果不等于
if [ int1 -ge int2 ] 如果>=
if [ int1 -gt int2 ] 如果>
if [ int1 -le int2 ] 如果<=
if [ int1 -lt int2 ] 如果<
- 字符串变量表达式
If [ $a = $b ] 如果string1等于string2(字符串允许使用赋值号做等号)
if [ $string1 != $string2 ] 如果string1不等于string2
if [ -n $string ] 如果string 非空(非0),返回0(true)
if [ -z $string ] 如果string 为空
if [ $sting ] 如果string 非空,返回0 (和-n类似)