
部署mcp服务器的自动化CI/CD管道
该存储库展示了一个完全自动化的CI/CD管道,用于容器化Python应用程序,使用 GitHub操作 和 Kubernetes (通过 Minikube).它自动化了测试和生产环境的构建、测试和部署工作流程,并将安全扫描集成到每次运行中。
______________________________________________________________________
🔧 特性
- 持续集成(CI)
在每次向推送或拉取请求时自动构建和测试应用程序 main 支。
- 自动安全扫描
合并 GitHub CodeQL 在CI工作流期间扫描Python代码以查找已知漏洞。
- 分期部署
每个pull请求都会自动部署到 暂存 合并前进行验证的环境。
- 持续部署(CD)
一旦合并到 main,最新版本将自动部署到 生产 环境。
- 自托管跑步者集成
部署步骤在自托管运行器上运行 Minikube 和 码头工人 安装。
______________________________________________________________________
⚙️ 运作原理
CI/CD管道定义见 .github/workflows/ci-cd.yml 并且围绕两个关键工作流程构建:
1.✅ 拉取请求工作流
当对打开pull请求时触发 main 支。
🔍 CI:构建、测试和安全扫描
*在GitHub托管的运行器上执行*
- 结账代码
- 安装依赖项
- 运行单元测试
- 执行 CodeQL 安全扫描
部署到暂存
*在自行主持的跑步者身上执行*
- 开始 Minikube
- 构建应用程序的Docker镜像
- 使用Kubernetes清单部署到集群中的临时命名空间
✅ 拉取请求必须通过这两个作业才有资格进行合并。
______________________________________________________________________
2.合并工作流(生产部署)
当更改合并到 main 支。
🔄 CI:重建和重新扫描
确保合并的代码仍然有效且安全。
📦 部署到生产
*在自行主持的跑步者身上执行*
- 开始 Minikube
- 构建最终
:latestDocker镜像 - 应用Kubernetes清单部署到 生产 环境
- 输出运行服务以供确认
______________________________________________________________________
📁 存储库结构
.
├── .github/workflows/
│ └── ci-cd.yml # CI/CD workflow configuration
│
├── app/
│ └── mcp-server/
│ ├── app/
│ │ └── mcp_server.py # Main Python application
│ ├── Dockerfile # Docker build instructions
│ ├── k8s/
│ │ └── deployment.yaml # Kubernetes deployment/service config
│ ├── requirements.txt # Python dependencies
│ └── tests/
│ └── test_mcp_server.py # Unit tests
│
└── README.md______________________________________________________________________
入门指南
先决条件
确保您的自托管跑步者配置了以下内容:
安装说明
- 分叉此存储库
在您的GitHub帐户中创建一个分支以开始使用。
- 配置自托管运行程序
跟随 添加一个自托管跑步者。
> 确保你的跑步者有 self-hosted 标签——这是部署作业所必需的。
- 添加您的应用程序代码
替换以下内容 app/mcp-server/ 使用自己的Python应用程序。
- 更新配置文件
- 修改 Dockerfile 以适应应用程序的构建过程 - 更新 k8s/deployment.yaml 使用应用程序的端口、环境变量等。
- 打开拉取请求
创建分支、推送更改并打开PR main. 管道将处理其余的工作——构建、测试、扫描、部署到测试阶段,最后部署到生产环境。
______________________________________________________________________
🧪 示例用例
做一个小小的改变→ 打开拉取请求→ 自动测试并部署到测试阶段→ 合并→ 已投入生产。
______________________________________________________________________
📌 备注
- 这里使用Minikube是为了简单起见,使其成为本地测试和学习的理想选择。对于生产规模的系统,调整托管Kubernetes集群(例如EKS、GKE、AKS)的配置。
- 确保你的自托管运行器有足够的资源来高效运行Minikube集群和Docker构建。
______________________________________________________________________
💬 问题或贡献?
请随时打开问题或提交拉取请求。欢迎投稿!
______________________________________________________________________
您是否希望将此导出为 README.md 文件?
