127 lines
3.1 KiB
Bash
Executable File
127 lines
3.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Report Service 部署脚本
|
|
|
|
set -e
|
|
|
|
# 颜色定义
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# 配置
|
|
SERVICE_NAME="report-service"
|
|
SERVICE_PORT=8084
|
|
DOCKER_IMAGE="erp-registry.cn-hangzhou.cr.aliyuncs.com/erp/report-service:1.0.0"
|
|
NAMESPACE="erp"
|
|
|
|
echo -e "${GREEN}======================================"
|
|
echo -e " Report Service 部署脚本"
|
|
echo -e "======================================${NC}"
|
|
|
|
# 构建项目
|
|
build_project() {
|
|
echo -e "${YELLOW}[1/5] 构建项目...${NC}"
|
|
cd "$(dirname "$0")/.."
|
|
mvn clean package -DskipTests -U
|
|
echo -e "${GREEN}构建完成${NC}"
|
|
}
|
|
|
|
# 构建Docker镜像
|
|
build_docker() {
|
|
echo -e "${YELLOW}[2/5] 构建Docker镜像...${NC}"
|
|
cd "$(dirname "$0")/.."
|
|
docker build -t "$DOCKER_IMAGE" -f deploy/Dockerfile .
|
|
echo -e "${GREEN}Docker镜像构建完成${NC}"
|
|
}
|
|
|
|
# 推送Docker镜像
|
|
push_docker() {
|
|
echo -e "${YELLOW}[3/5] 推送Docker镜像...${NC}"
|
|
docker push "$DOCKER_IMAGE"
|
|
echo -e "${GREEN}Docker镜像推送完成${NC}"
|
|
}
|
|
|
|
# 部署到K8s
|
|
deploy_k8s() {
|
|
echo -e "${YELLOW}[4/5] 部署到Kubernetes...${NC}"
|
|
kubectl apply -f deploy/k8s-deployment.yaml -n "$NAMESPACE"
|
|
echo -e "${GREEN}K8s部署完成${NC}"
|
|
}
|
|
|
|
# 等待服务就绪
|
|
wait_for_service() {
|
|
echo -e "${YELLOW}[5/5] 等待服务就绪...${NC}"
|
|
kubectl rollout status deployment/report-service -n "$NAMESPACE" --timeout=300s
|
|
|
|
# 检查健康状态
|
|
for i in {1..30}; do
|
|
HEALTH=$(kubectl get pods -n "$NAMESPACE" -l app=report-service -o jsonpath='{.items[0].status.phase}')
|
|
if [ "$HEALTH" == "Running" ]; then
|
|
echo -e "${GREEN}服务已就绪${NC}"
|
|
return 0
|
|
fi
|
|
sleep 2
|
|
done
|
|
|
|
echo -e "${RED}服务启动超时${NC}"
|
|
return 1
|
|
}
|
|
|
|
# 显示服务状态
|
|
show_status() {
|
|
echo -e "${GREEN}======================================"
|
|
echo -e " 服务状态"
|
|
echo -e "======================================${NC}"
|
|
kubectl get pods -n "$NAMESPACE" -l app=report-service
|
|
echo ""
|
|
kubectl get svc -n "$NAMESPACE" -l app=report-service
|
|
}
|
|
|
|
# 主流程
|
|
main() {
|
|
case "${1:-deploy}" in
|
|
build)
|
|
build_project
|
|
;;
|
|
docker)
|
|
build_project
|
|
build_docker
|
|
;;
|
|
push)
|
|
build_project
|
|
build_docker
|
|
push_docker
|
|
;;
|
|
deploy)
|
|
build_project
|
|
build_docker
|
|
push_docker
|
|
deploy_k8s
|
|
wait_for_service
|
|
show_status
|
|
;;
|
|
status)
|
|
show_status
|
|
;;
|
|
restart)
|
|
kubectl rollout restart deployment/report-service -n "$NAMESPACE"
|
|
wait_for_service
|
|
show_status
|
|
;;
|
|
scale)
|
|
kubectl scale deployment/report-service --replicas="${2:-2}" -n "$NAMESPACE"
|
|
;;
|
|
logs)
|
|
kubectl logs -f deployment/report-service -n "$NAMESPACE" "${@:2}"
|
|
;;
|
|
*)
|
|
echo "用法: $0 {build|docker|push|deploy|status|restart|scale|logs}"
|
|
exit 1
|
|
;;
|
|
esac
|
|
}
|
|
|
|
main "$@"
|