91 lines
2.8 KiB
YAML
91 lines
2.8 KiB
YAML
name: 构建并部署 AI Agent 服务
|
||
|
||
on:
|
||
push:
|
||
branches: [ main, master ]
|
||
workflow_dispatch:
|
||
|
||
jobs:
|
||
deploy:
|
||
runs-on: ubuntu-latest
|
||
steps:
|
||
- name: 检出代码
|
||
uses: actions/checkout@v4.1.1
|
||
|
||
- name: 检查 Python 环境
|
||
run: |
|
||
python3 --version
|
||
pip3 --version
|
||
|
||
- name: 验证 Secrets 配置
|
||
run: |
|
||
echo "🔐 检查环境变量注入情况..."
|
||
|
||
check_secret() {
|
||
local name="$1"
|
||
local desc="$2"
|
||
local value="${!name}"
|
||
if [ -n "$value" ]; then
|
||
echo "✅ ${name} 已注入(长度:${#value})"
|
||
else
|
||
echo "⚠️ ${name} 未注入(${desc})"
|
||
fi
|
||
}
|
||
|
||
check_secret "ZHIPUAI_API_KEY" "智谱模型不可用"
|
||
check_secret "DEEPSEEK_API_KEY" "DeepSeek模型不可用"
|
||
check_secret "LLAMACPP_API_KEY" "本地LLM/Embedding不可用"
|
||
check_secret "DB_PASSWORD" "PostgreSQL数据库不可用"
|
||
check_secret "QDRANT_API_KEY" "Qdrant向量数据库不可用"
|
||
|
||
echo ""
|
||
echo "💡 提示:如果看到警告,请在 Gitea 仓库 Settings → Secrets 中添加对应密钥"
|
||
env:
|
||
ZHIPUAI_API_KEY: ${{ secrets.ZHIPUAI_API_KEY }}
|
||
DEEPSEEK_API_KEY: ${{ secrets.DEEPSEEK_API_KEY }}
|
||
LLAMACPP_API_KEY: ${{ secrets.LLAMACPP_API_KEY }}
|
||
DB_PASSWORD: ${{ secrets.DB_PASSWORD }}
|
||
QDRANT_API_KEY: ${{ secrets.QDRANT_API_KEY }}
|
||
|
||
- name: 确保基础镜像已拉取
|
||
run: |
|
||
docker pull python:3.11-slim || true
|
||
|
||
- name: 构建并启动前后端服务(环境变量注入)
|
||
env:
|
||
ZHIPUAI_API_KEY: ${{ secrets.ZHIPUAI_API_KEY }}
|
||
DEEPSEEK_API_KEY: ${{ secrets.DEEPSEEK_API_KEY }}
|
||
LLAMACPP_API_KEY: ${{ secrets.LLAMACPP_API_KEY }}
|
||
DB_PASSWORD: ${{ secrets.DB_PASSWORD }}
|
||
QDRANT_API_KEY: ${{ secrets.QDRANT_API_KEY }}
|
||
run: |
|
||
export DOCKER_BUILDKIT=1
|
||
cd docker
|
||
docker compose up -d --build backend frontend
|
||
|
||
- name: 健康检查
|
||
run: |
|
||
echo "等待后端服务启动..."
|
||
sleep 30
|
||
for i in {1..10}; do
|
||
# 修正端口为 8079
|
||
if curl -f http://172.17.0.1:8079/health > /dev/null 2>&1; then
|
||
echo "✅ 后端服务正常"
|
||
exit 0
|
||
fi
|
||
echo "等待中... ($i/10)"
|
||
sleep 5
|
||
done
|
||
echo "❌ 后端服务未就绪,查看日志:"
|
||
cd docker
|
||
docker compose logs backend --tail 50
|
||
exit 1
|
||
|
||
- name: 清理无用的 Docker 资源
|
||
run: docker system prune -f
|
||
|
||
- name: 显示运行状态
|
||
run: |
|
||
cd docker
|
||
docker compose ps
|