skip to content
Liu Yang's Blog

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。