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 "🔐 检查环境变量注入情况..." if [ -n "$ZHIPUAI_API_KEY" ]; then echo "✅ ZHIPUAI_API_KEY 已注入(长度:${#ZHIPUAI_API_KEY})" else echo "⚠️ ZHIPUAI_API_KEY 未注入(将使用空值,智谱模型不可用)" fi if [ -n "$DEEPSEEK_API_KEY" ]; then echo "✅ DEEPSEEK_API_KEY 已注入(长度:${#DEEPSEEK_API_KEY})" else echo "⚠️ DEEPSEEK_API_KEY 未注入(将使用空值,DeepSeek模型不可用)" fi if [ -n "$LLAMACPP_API_KEY" ]; then echo "✅ LLAMACPP_API_KEY 已注入(长度:${#LLAMACPP_API_KEY})" else echo "⚠️ LLAMACPP_API_KEY 未注入(将使用空值,本地LLM不可用)" fi echo "" echo "💡 提示:如果看到警告,请在 Gitea 仓库 Settings → Actions → Secrets 中添加对应密钥" env: ZHIPUAI_API_KEY: ${{ secrets.ZHIPUAI_API_KEY }} DEEPSEEK_API_KEY: ${{ secrets.DEEPSEEK_API_KEY }} LLAMACPP_API_KEY: ${{ secrets.LLAMACPP_API_KEY }} - name: 确保基础镜像已拉取 run: | docker pull python:3.11-slim || true docker pull postgres:16 || true - name: 构建并启动前后端服务(环境变量注入) env: ZHIPUAI_API_KEY: ${{ secrets.ZHIPUAI_API_KEY }} DEEPSEEK_API_KEY: ${{ secrets.DEEPSEEK_API_KEY }} LLAMACPP_API_KEY: ${{ secrets.LLAMACPP_API_KEY }} run: | # 方式一:直接在命令前设置环境变量(推荐,避免导出遗漏) export DOCKER_BUILDKIT=1 ZHIPUAI_API_KEY="$ZHIPUAI_API_KEY" \ DEEPSEEK_API_KEY="$DEEPSEEK_API_KEY" \ LLAMACPP_API_KEY="$LLAMACPP_API_KEY" \ docker compose -f docker/docker-compose.yml 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 "❌ 后端服务未就绪,查看日志:" docker compose -f docker/docker-compose.yml logs backend --tail 50 exit 1 - name: 清理无用的 Docker 资源 run: docker system prune -f - name: 显示运行状态 run: docker compose -f docker/docker-compose.yml ps