---
url: /sre/devops/cicd-01.md
---
# 从零实现 CI/CD:起步
为了简单期间,系列文章以开发、构建和部署 VitePress 静态站点为例,后期根据差异性补充 SpringBoot 服务端项目。
## 阶段一:服务能 Run
新手开发起步,能让服务跑起来,是一个重要的里程碑。
1. 在个人电脑上使用 IDE 如 VsCode、WebStorm 开发、调试。
2. 本地开发环境,查看开发效果 `npm run dev`
3. 把项目源代码使用 `scp` 工具远程复制到云服务器上(具备公网 IP)
4. 安装依赖 `npm install`
5. 以后台方式运行 `nohup npm run dev &`
此方法使用 `nodejs` 作为服务器,支持热启动,一般用于开发环境,直接作为生产环境的 Web 服务器效率较低。
## 阶段二:Nginx 静态资源代理
Web 静态资源项目使用 Nginx 部署是最佳实践。
1. 在个人电脑上使用 IDE 如 VsCode、WebStorm 开发、调试。
2. 本地开发环境,查看开发效果 `npm run dev`
3. 项目构建 `npm run build`,生成分发包 *dist*
4. 把 *dist* 包使用 `scp` 工具 复制到云服务器上(具备公网 IP)
5. 使用 Nginx 对 *dist* 包做静态资源代理,并启动 Nginx 服务
## 阶段三:版本管理与代码托管
为了方便代码版本管理、多人协作、代码共享等,引入了 git 工具和托管平台 GitHub 或 Gitee。
1. 在个人电脑上使用 IDE 如 VsCode、WebStorm 开发、调试。
2. 本地开发环境,查看开发效果 `npm run dev`
3. 在 git 仓库中提交变更,并推送到 GitHub
4. 登录云服务器,使用 `git clone` 克隆仓库、使用 `git pull` 获取最新提交。
5. 安装依赖 `npm install`
6. 项目构建 `npm run build`,生成分发包 *dist*
7. 使用 Nginx 对 *dist* 包做静态资源代理,并启动 Nginx 服务
## 总结
作为一名起步的开发者,阶段三实现了**最小可行**、且完全手动的交付闭环,绝大多数中小团队止步于此。
下一篇文章,引入 Docker(Podman) 实现服务容器化,**一次构建,到处运行**,有效解决服务可移植性问题。
## 参考
1. Docker 官方文档,
2. Podman 官方文档,
3. Nginx 静态资源服务器,
4. 静态资源服务器,
5. git 版本控制,
6. GitHub 代码托管,
7. Gitee 国产化 git 代码托管仓库,免科学上网,