Files
billai/deploy.sh
CHE LIANG ZHAO ed0a44851d
Some checks failed
Deploy BillAI / Deploy to Production (push) Failing after 0s
feat: 添加 Gitea Actions 自动部署功能
2026-01-26 17:21:12 +08:00

63 lines
1.6 KiB
Bash

#!/bin/bash
# BillAI 部署脚本
# 用于手动部署或 Gitea Actions 自动部署
set -e
# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
echo -e "${GREEN}=== BillAI 部署开始 ===${NC}"
echo "时间: $(date '+%Y-%m-%d %H:%M:%S')"
# 获取脚本所在目录
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"
echo -e "\n${YELLOW}[1/4] 拉取最新代码${NC}"
git fetch origin master
git reset --hard origin/master
echo "当前版本: $(git log -1 --format='%h %s')"
echo -e "\n${YELLOW}[2/4] 构建并部署服务${NC}"
docker compose up -d --build --remove-orphans
echo -e "\n${YELLOW}[3/4] 清理旧镜像${NC}"
docker image prune -f
echo -e "\n${YELLOW}[4/4] 健康检查${NC}"
echo "等待服务启动..."
sleep 15
# 检查服务状态(通过 Docker 健康检查状态)
check_service() {
local name=$1
local container=$2
local status=$(docker inspect --format='{{.State.Health.Status}}' "$container" 2>/dev/null)
if [ "$status" = "healthy" ]; then
echo -e " ${GREEN}${NC} $name 服务正常"
return 0
else
echo -e " ${RED}${NC} $name 服务异常 (状态: $status)"
return 1
fi
}
FAILED=0
check_service "Web" "billai-web" || FAILED=1
check_service "Server" "billai-server" || FAILED=1
check_service "Analyzer" "billai-analyzer" || FAILED=1
check_service "MongoDB" "billai-mongodb" || FAILED=1
if [ $FAILED -eq 0 ]; then
echo -e "\n${GREEN}=== 部署成功 ===${NC}"
exit 0
else
echo -e "\n${RED}=== 部署失败:部分服务异常 ===${NC}"
docker compose ps
exit 1
fi