Spring Cloud Alibaba 微服务项目开发测试环境自动化部署
Posted licbc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Cloud Alibaba 微服务项目开发测试环境自动化部署相关的知识,希望对你有一定的参考价值。
IDEA 微服务开发环境自动发布
问题描述
平常我们使用IntelliJ IDEA 开发还是比较多的,工具的强大自然不用说,用好工具确实能能省下不少事情,提升开发效率,在单体架构的开发时,手动编译、打包、上传、部署都还可以接受,但在我们使用IDEA 开发微服务项目时,就会遇到问题,动不动几十个服务,如果都这么来一遍(当然如果是微你是微服务团队,专人负责固定几个服务除外),估计手都要废了,能不能借助工具将这个过程自动化呢?能省点时间上个厕所,抽根烟,吃点零食也可以嘛,本文就介绍一种简单的方法实现开发环境的自动发布
微服务常用组件
一般采用 spring cloud 或 spring cloud alibaba 较多,常用会有以下几个组件
注册中心 eureka / nacos
网关服务 zuul / srping cloud gateway
基础服务 如:user-center (用户中心) uaa-center(授权中心) 等
业务服务 如: account-center (账户中心) product-center (产品中心) finance-center (财务中心) 等
实现技术
主要目标:实现在IDEA中双击完成自动编译、打包、上传到服务、部署整个过程
实现技术:使用Maven插件 + shell 脚本
服务器脚本准备
构建前要在服务端事先配置好脚本,安装好JDK并配置好环境变量
在linux服务器上创建服务目录
mkdir -p /usr/local/service/account
在该目录下放置 account.sh change.sh 两个脚本,脚本内容如下
account.sh (服务启停脚本)
#!/bin/bash
export JAVA_HOME=/usr/local/java
export PATH=.:$JAVA_HOME/bin:$PATH
APP_NAME=account-center
JAR_FILE=$APP_NAME.jar
LOG_PATH=./log
start(){
checkpid
if [ ! -n "$pid" ]; then
echo "启动命令"
echo "nohup java -jar $JAR_FILE >nohup.out &"
nohup java -server -Xms1024m -Xmx1024m -XX:PermSize=200m -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar $JAR_FILE --spring.profiles.active=test --logging.level.root=debug >> nohup.out 2>&1 &
sleep 35s
echo "执行成功"
else
echo "$APP_NAME is runing PID: $pid"
fi
}
checkpid(){
pid=`ps -ef |grep $JAR_FILE |grep -v grep |awk '{print $2}'`
}
stop(){
checkpid
if [ ! -n "$pid" ]; then
echo "$APP_NAME not runing"
else
echo "$APP_NAME stop..."
kill $pid
sleep 2s
kill -9 $pid
fi
}
restart(){
stop
sleep 1s
start
}
status(){
checkpid
if [ ! -n "$pid" ]; then
echo "$APP_NAME not runing"
else
echo "$APP_NAME runing PID: $pid"
fi
}
case $1 in
start) start;;
stop) stop;;
restart) restart;;
status) status;;
*) echo "require start|stop|restart|status" ;;
esac
change.sh (用途:备份原文件,重启服务)
#!/bin/bash
APP_NAME=account-center
cd /usr/local/service/account/
sh account.sh stop
mv $APP_NAME.jar /tmp/$APP_NAME.jar.$(date "+%Y%m%d%H%M%S")
rm -rf $APP_NAME.jar
mv $APP_NAME.jar.1 $APP_NAME.jar
nohup sh account.sh start &
配置Maven自动发布
下面拿一单个服务account-center (用户中心)举例,其它服务方式类似:
第一步: 在微服务pom.xml 增加插件(wagon-maven-plugin) 如下
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>wagon-maven-plugin</artifactId>
<version>2.0.0</version>
<configuration>
<fromFile>target/account-center.jar</fromFile>
<toFile>account-center.jar.1</toFile>
<url><![CDATA[scp://${env.user}:${env.password}@${env.targetip}:${env.port}/usr/local/scl-service/account]]></url>
<commands>
<command>sh /usr/local/service/account/change.sh;</command>
</commands>
<displayCommandOutputs>true</displayCommandOutputs>
</configuration>
</plugin>
</plugins>
</build>
${env.user} 变量我们从中maven 构建命令行传入
第二步:配置mavn构建目标
在IDEA Maven 视频,右建account-center服务的Lifecycle ,单击 Create
配置命令行如下:
command line:
clean package wagon:upload-single -Dmaven.test.skip=true -Dspring.profiles.active=prod -Denv.user=deployer -Denv.password=123456 -Denv.targetip=192.168.3.35 -Denv.port=22 -f pom.xml
第三步:执行Maven构建目标
双击刚才创建的Maven构建任务即可完成自动发布
以上是关于Spring Cloud Alibaba 微服务项目开发测试环境自动化部署的主要内容,如果未能解决你的问题,请参考以下文章
Spring Cloud Alibaba 微服务项目开发测试环境自动化部署
Spring Cloud Alibaba 微服务项目开发测试环境自动化部署
一种Spring Cloud Alibaba微服务架构图设计
一种Spring Cloud Alibaba微服务架构图设计