目录
1、项目介绍
在项目的部署上面,由于没有采用 Docker镜像的方式去做部署管理,需要直接启动 SpringBoot 的jar 包,在管理上面,对于打包运行是一件头痛的事情,每次都需要打包上传然后启动。所以,由于以上原因,才编写了sci的项目,当前项目只适合SpringBoot的项目使用,其他的项目还不适合,后期可以做适配。
2、项目地址
项目的地址是:https://github.com/poemp/springcloud-sci
3、项目应用
3.1、项目源码
工程文件:https://github.com/poemp/springcloud-sci/blob/master/sci.sh
a) . 配置必要的信息,第一是配置分支,第二是配置需要发布的项目本地的地址,第三个配置是配置jar需要在哪一个文件目录下运行。
# git的分支
ci_git_branch=dev
#项目所在的本地路径
ci_project_path=/opt/repos/xyidc-backend
#项目的执行路径
ci_ctl_home=/opt/services
echo "Git Branch :" $ci_git_branch
echo "Project Path :" $ci_project_path
echo "CI Ctl Home :" $ci_ctl_home
b). 扫描目录下有@SpringBootApplication注解的java文件,如果有,则当前项目模块是SpringBoot项目
cd $ci_project_path
softfiles=`ls`
j=0
for f in $softfiles
do
if [ -d $f ] ;then
s=`grep -rHwns '@SpringBootApplication' --include "*.java" ./$f`
if [ ! -z "$s" ];then
folder_list[j]=$f
j=`expr $j + 1`
fi
fi
done
#开始输入需要发布的模块
echo -e "Get This Project Has " ${#folder_list[*]} " Module , As Follows: \n"
echo -e "\n\n-------------------------------------------------"
for i in ${!folder_list[@]}
do
t=$(($i+1))
echo " > " $t"."${folder_list[$i]}
done
c). 交互输入需要发布的模块
##使用local命令定义本地变量
local ind=$1
local length=$2
if [ $ind -eq 0 ];then
return $ind
fi
if [ "$1" -gt 0 ] 2>/dev/null ;then
if [ $ind -gt $length ];then
echo -e "\n[ERROR]This Index Is Out Of Array Size $2, Will Exit!!!!\n"
exit 1
fi
else
echo "Input $ind Is Error, Plasea ReInput"
exit 1
fi
return $ind
d).发布全部模块
#发布所有的项目工程
function deployAll(){
echo "Go Path " $ci_project_path
cd $ci_project_path
git fetch -p && git checkout $ci_git_branch && git pull origin $ci_git_branch
mvn clean install -DskipTests
for f in $softfiles
do
if [ -d $f ] ;then
kill -9 `jps|grep ${module_name}.jar|awk '{print $1}'`
rm -rf $ci_ctl_home/jars/$f.jar
cp ${f}/target/${f}-0.0.1-SNAPSHOT.jar $ci_ctl_home/jars/$f.jar
nohup java -xmx4g -jar $ci_ctl_home/jars/$f.jar > $ci_ctl_home/logs/$f.log 2>&1
fi
done
}
e).发布输入的模块
# 发布某一个模块
function deployModule(){
local f=$1
cd $ci_project_path
git fetch -p && git checkout $ci_git_branch && git pull origin $ci_git_branch
mvn clean install -DskipTests
kill -9 `jps|grep ${module_name}.jar|awk '{print $1}'`
rm -rf $ci_ctl_home/jars/$f.jar
cp ${f}/target/${f}-0.0.1-SNAPSHOT.jar $ci_ctl_home/jars/$f.jar
nohup java -xmx4g -jar $ci_ctl_home/jars/$f.jar > $ci_ctl_home/logs/$f.log 2>&1
}
3.2、配置
需要配置项目的分支
# git的分支
ci_git_branch=dev
需要发布的本地项目地址
#项目所在的本地路径
ci_project_path=/opt/repos/xyidc-backend
需要运行jar的目录
#项目的执行路径
ci_ctl_home=/opt/services
3.3、输入脚本运行
4、项目注意事项
- 由于当前项目是为了发布SpringBoot项目为创建,所以需要项目的模块必须是SpringBoot项目
- 当前项目只支持一层模块项目
- 项目使用的Maven做项目管理,所以需要Maven环境支持
5、未来项目
sci-jib.sh
这个项目需要项目中集成google-jib才可以使用
项目使用打包方式是:
mvn clean compile jib:build
打包的Docker镜像需要通过Maven去配置,如何配置可以查看博客:
https://blog.csdn.net/poem_2010/article/details/108249860
使用的是Rancher作为镜像的管理工具,其他的就自己去看咯,可以自己去修改源码发布。