自动化CI/CD管道

一个使用GitHub Actions和Kubernetes(通过Minikube)自动化构建、测试和部署容器化Python应用程序的CI/CD管道,适用于开发和测试环境。

  • by sagar0x0
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 sagar0x0/auto-deploy-mcp-server

使用说明

部署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
  • 构建最终 :latest Docker镜像
  • 应用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

入门指南

先决条件

确保您的自托管跑步者配置了以下内容:

安装说明

  1. 分叉此存储库 在您的GitHub帐户中创建一个分支以开始使用。

  2. 配置自托管运行程序 跟随 GitHub指南 添加一个自托管跑步者。

    确保你的跑步者有 self-hosted 标签——这是部署作业所必需的。

  3. 添加您的应用程序代码 替换以下内容 app/mcp-server/ 使用自己的Python应用程序。

  4. 更新配置文件

    • 修改 Dockerfile 以适应应用程序的构建过程
    • 更新 k8s/deployment.yaml 使用应用程序的端口、环境变量等。
  5. 打开拉取请求 创建分支、推送更改并打开PR main. 管道将处理其余的工作——构建、测试、扫描、部署到测试阶段,最后部署到生产环境。


🧪 示例用例

做一个小小的改变→ 打开拉取请求→ 自动测试并部署到测试阶段→ 合并→ 已投入生产。


📌 备注

  • 这里使用Minikube是为了简单起见,使其成为本地测试和学习的理想选择。对于生产规模的系统,调整托管Kubernetes集群(例如EKS、GKE、AKS)的配置。
  • 确保你的自托管运行器有足够的资源来高效运行Minikube集群和Docker构建。

💬 问题或贡献?

请随时打开问题或提交拉取请求。欢迎投稿!


您是否希望将此导出为 README.md 文件?