DevOps / GitOps 经验总结
/ 3 min read
Updated:Table of Contents
我主要在 Coding 平台上实践过这套流程。它和 Jenkins 类似,但更简单。下面以 Java 前后端项目为例。
在我看来,DevOps 可以拆成 CI 和 CD 两段:
- CI:代码仓库 + 编译测试
- CD:制品库 + 服务器部署
CI
代码仓库
团队在 Git 仓库上协作,流水线监听主分支,一有推送就触发编译。
编译与测试
编写 Jenkins 和 Maven 的配置文件。编译服务器拉取代码,完成编译和测试,再把项目成品打包推送到制品库。
CD
制品库
存储项目的部署文件和版本信息。新制品推送后,触发部署流程。
服务器部署
- 后端:打包成 Jar 后,写个脚本把服务跑起来即可。也可以做成镜像,或者多机部署并配置负载均衡。
- 前端:以 Vue 为例,编译后建议用 Dockerfile 基于 Nginx 镜像构建前端镜像,再用 Docker 部署。
- Web 中间件:Caddy 或 Nginx Proxy Manager,简单配置即可。
- DNS:用 Cloudflare;DNSPod 支持按线路解析,可以把不同线路指向不同服务器。
- TLS 与 CDN:证书交给中间件自动签发;CDN 可以配合 DNSPod 或 Cloudflare 全局使用。
- 数据库:可以单独放在一台服务器上组内网,也可以直接用 Docker 镜像运行。
整套流程跑通后,所有配置都可以用 Docker Compose 等方式固化下来。
自建与托管
自建平台
Git 工作流用 Gitea,持续集成和部署用 Drone,Jenkins 也可以。Gitea 放到公网时的防护可以参考 通过 Cloudflared 为 Gitea 提供保护。
Serverless
静态站点和前端可以直接用 Serverless 方案,例如 Vercel、Netlify、Cloudflare Pages,或者 GitHub Actions。