使用说明
部署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帐户中创建一个分支以开始使用。
-
配置自托管运行程序 跟随 GitHub指南 添加一个自托管跑步者。
确保你的跑步者有
self-hosted标签——这是部署作业所必需的。 -
添加您的应用程序代码 替换以下内容
app/mcp-server/使用自己的Python应用程序。 -
更新配置文件
- 修改
Dockerfile以适应应用程序的构建过程 - 更新
k8s/deployment.yaml使用应用程序的端口、环境变量等。
- 修改
-
打开拉取请求 创建分支、推送更改并打开PR
main. 管道将处理其余的工作——构建、测试、扫描、部署到测试阶段,最后部署到生产环境。
🧪 示例用例
做一个小小的改变→ 打开拉取请求→ 自动测试并部署到测试阶段→ 合并→ 已投入生产。
📌 备注
- 这里使用Minikube是为了简单起见,使其成为本地测试和学习的理想选择。对于生产规模的系统,调整托管Kubernetes集群(例如EKS、GKE、AKS)的配置。
- 确保你的自托管运行器有足够的资源来高效运行Minikube集群和Docker构建。
💬 问题或贡献?
请随时打开问题或提交拉取请求。欢迎投稿!
您是否希望将此导出为 README.md 文件?