用 AI 开发项目变快后,我做了一个自己的轻量部署平台

0 阅读6分钟

用 AI 开发项目变快后,我做了一个自己的轻量部署平台

最近用 AI 开发项目的速度越来越快。

以前一个人做小工具、小站点或者小服务,往往要写很久。很多想法也就一直搁着。现在有 Code Agent 这类 AI 编程工具帮忙,不管想法复杂度如何,一两天就能先做出一个可以运行的版本。

做项目方便以后,我手里的项目也慢慢多了起来。开发这一步比以前快了,原来没太在意的部署问题开始频繁出现。

Deploy Bot 仪表盘

从手工部署到 Shell 脚本

项目少的时候,我一直手动部署。每次更新就是登录服务器、拉代码、打包、上传产物、重启服务,最后看一会儿日志。步骤不复杂,偶尔操作一次也能接受。

后来更新频繁了一些,我就让 AI 帮我写 Shell 脚本。原来要手动执行的一串命令,改成运行一次脚本就可以完成。项目和服务器固定时,跑脚本就够了。

问题出在项目增加以后。

前端项目只需要构建和替换静态文件,Spring Boot 项目要打包、停止旧进程再启动新服务,前后端放在一起的项目又有另一套流程。它们使用的 Java、Node 和 Maven 版本也不完全一样。为了处理这些差异,我开始给每个项目准备不同的脚本。

每个脚本只能记住我写进去的那套命令。项目对应哪台服务器、使用什么环境、产物放在哪个目录、服务怎么启动,这些信息仍然散落在脚本、配置文件和我的记忆里。

平时一直使用同一台电脑还好,脚本能找到,SSH 密钥和环境也已经配好了。等到换电脑、换云服务器或者迁移项目时,就要重新把这些东西找出来,再弄清楚它们之间的关系。有些命令平时一直能用,换个环境后才发现,当初依赖了某个本地目录或者没有记下来的配置。

我需要一个固定的地方,把项目、机器、运行环境和部署过程放在一起管理。

我也考虑过现成的 CI/CD 工具

我考虑过 Jenkins 之类的 CI/CD 工具。这些工具很成熟,持续集成、权限、任务编排和插件生态都比个人项目完整得多。

我的项目规模很小,使用的人也少。我需要把代码发布到自己的服务器,能看日志和部署记录,必要时重新发布以前的版本。

部署并维护一套功能完整的平台,再按它的方式接入每个项目,对我来说投入有些大。继续使用 Shell,前面那些分散的信息又只能自己维护。

于是我按自己的使用方式做了一个轻量部署平台,叫 Deploy Bot。

从 Shell 脚本到部署平台

开始做的时候,我先把原来的部署过程拆开看了一遍。

我先把相对固定的信息从脚本里拿了出来。代码仓库和认证方式归到项目,目标机器单独管理,Java、Node 和 Maven 归到每台机器的运行环境。不同类型项目的构建和发布差异放进插件与模板,最后由流水线把这些信息组合起来。

第一版跑通后,一个项目只需要配置一次,之后就可以从流水线大厅反复发布。原来散落在几个脚本里的参数,也跟着流水线保存了下来。

Deploy Bot 流水线大厅

底层做的事情没变,还是拉取代码、构建、同步产物和执行发布脚本。Deploy Bot 按保存的配置依次执行,同时把日志显示在页面上。

实际用了一段时间,我经常要回头确认某次部署用了哪些变量、当时的运行配置是什么,这些信息后来都放进了部署记录。本次部署和上一次成功部署之间的 Git 提交、文件变化也一起记录。历史构建产物会保留,需要时可以重新发布旧版本。

Deploy Bot 部署详情与实时日志

Java 服务还有进程管理的问题。发布完成后,Deploy Bot 会观察启动日志、识别服务进程,再记录 PID、运行状态和心跳。停止和重启也逐渐收进了这个页面。

Deploy Bot 服务管理

这些内容都是我在使用过程中慢慢补进去的。哪里还要翻脚本、找配置,我就继续整理哪里。

后来又加了 Agent Skill

Deploy Bot 用顺以后,我又把新项目接入这件事交给了 Code Agent。以前接入项目,要先看项目结构,再配置构建命令、产物目录、运行环境和流水线。步骤都有规律,很适合让 Agent 来处理。

本地 Code Agent 安装 Deploy Bot Skill 后,我只要在项目目录里告诉它要部署到哪台机器。Code Agent 会读取项目结构和构建文件,判断项目类型,整理构建命令、产物目录和启动方式,再查询 Deploy Bot 里已经配置好的主机、运行环境、插件和模板。

常规的 Java、React 和 Vue 项目可以直接套用内置模板。遇到多模块目录、额外的产物复制或者特殊构建步骤,Code Agent 会创建派生模板,构建脚本和发布脚本也一起生成。生成的配置先由我检查,确认后再写入 Deploy Bot。

接入完成后,Code Agent 还可以继续执行部署预检、发起部署并跟随日志。后面再次发布同一个项目,直接使用已经创建好的流水线。

Agent 通过单独的 API Token 使用 Deploy Bot,读取配置、创建项目、维护模板、创建流水线和执行部署可以分别授权。代码分析和配置生成由 Code Agent 完成,实际构建、传输、启动和部署记录由 Deploy Bot 处理。

项目目前的情况

Deploy Bot 最初是我为个人项目做的,目前已经在一家小型公司落地。实际接入的主要是常规 Java 后端和 React、Vue 前端项目,已经稳定完成上千次部署。

目前我主要把它用在个人项目和这家公司的日常发布上,后面还会继续补充常用的部署类型。

Deploy Bot 已经开源。仓库里可以查看完整代码,项目网站整理了部署示例、Docker 启动方式以及项目、主机、模板和流水线等使用文档。