基于 NestJS 的 DevOps 自动化平台项目

280 阅读3分钟

基于 NestJS 的 DevOps 自动化平台项目,其实目前只做了自建 CI/CD 流程的一部分(自定义轻量构建平台),后续暂时没打算继续做,目前够用就行。😄

而且只是部分开源了一下,前端代码没有发,只有Nest代码,另外改了一些配置,搞不好跑不起来,可能会报错。

Github 地址:ops-service

项目简介

本项目是一个基于 NestJS 框架开发的 DevOps 自动化平台,旨在为前端/后端项目提供一站式的持续集成与交付(CI/CD)解决方案。平台集成了代码管理、构建、发布、队列调度、等核心能力,支持多用户协作和流程自动化。

该项目充分利用了多线程,多进程,以及任务调度等来执行脚本,保证脚本和服务的稳定运行。

构建阶段(Build)

  • 自定义脚本执行: 允许用户编写任意构建脚本(如 npm run build、go build、make 等),执行逻辑灵活可配置。
  • 打包产物生成: 自动执行打包逻辑,产出二进制或前端资源包,为部署准备完整构建产物。

产物管理(Artifact Management)

  • 构建结果归档

    生成的文件支持查看、归档、下载,便于传递给部署阶段或其他服务。

  • 多版本管理

    支持不同构建版本的查看和管理,可对构建记录做历史追踪。

日志追踪(Logging & Auditing)

  • 构建日志可视化

    支持构建过程中实时日志查看、错误回溯,方便调试。

工作流编排(Pipeline / Workflow)

  • 任务流支持

    提供「构建 → 处理 → 存档」的基本工作流能力

1.png

2.png

3.png

4.png

5.png

6.png

7.png

技术栈

  • 后端框架:NestJS(TypeScript)
  • 数据库:MySQL,TypeORM
  • 任务调度@nestjs/schedule
  • 队列与多线程poolifier
  • 日志系统:log4js
  • 认证与权限:JWT + Passport
  • 容器化:Docker
  • 静态资源管理:支持静态文件上传与自动推送

目录结构

项目结构清晰,便于扩展和维护:

src/
├── auth/             # 认证与权限模块
├── build/            # 构建与版本管理模块
├── deployment/       # 容器化与部署模块
├── file/             # 文件与静态资源管理
├── queue/            # 队列与任务调度
├── user/             # 用户管理模块
├── workflow/         # 自定义工作流模块
├── common/           # 公共模块
└── main.ts           # 项目入口

主要功能

1. 用户认证与权限管理

  • 支持用户注册、登录,基于 JWT 进行接口权限校验

2. 版本与构建管理

  • 支持多项目多版本管理,自动拉取代码分支(支持 GitLab/GitHub)
  • 构建流程可配置,支持自定义脚本、环境变量、分支等参数
  • 构建日志实时记录,支持日志下载与查看

3. 工作流与队列调度

  • 支持自定义工作流(WorkFlow),可视化流程配置
  • 构建任务自动进入队列,支持并发与串行调度
  • 队列任务支持暂停、终止、失败重试等操作

4. 文件与静态资源管理

  • 支持多文件上传、自动归档、静态资源自动推送到指定目录

亮点与特色

  • 高扩展性:采用模块化设计,业务功能解耦,便于二次开发
  • 自动化流程:集成队列与多线程池,支持高并发任务调度
  • 安全性:全局异常处理、数据拦截、权限校验,保障系统稳定安全
  • 易用性:Swagger 自动生成 API 文档,接口调试方便
  • 运维友好:日志系统完善,支持 PM2、Docker 等主流运维工具

启动与使用

安装依赖

npm install

启动开发环境

npm run dev

生产环境构建与部署

bash build.sh

docker 镜像打包

npm run build:image ops-cd:1.0.2

访问 Swagger API 文档

访问地址:

http://localhost:3000/api