Skip to content

为什么拆成两个 job

.github/workflows/deploy.ymlmain 上并行:

  • serverserver/mvn -B verify,把 server.jar scp 到 /opt/vie/app/deploy,再 docker compose up -d --build app
  • sitesite/npm ci,先 npm run check:content 拦住空壳文章,再 npm run build,把 site/.vitepress/dist/* 传到 site-dist-new

前端改文不该等 Java 测试;后端改限流不该重传整站静态资源。密钥用 SERVER_HOST / SERVER_USER / SERVER_SSH_KEY,仓库里没有口令。

静态站怎么做到可回退

SSH 脚本把现有 site-dist 改名为 site-dist-old,再把 site-dist-new 改成 site-dist。Caddy 的 ./site-dist:/srv/site 是 bind mount,目录 inode 变了进程仍握着旧挂载,所以必须 docker compose up -d --force-recreate caddy。若构建失败,job 在上传前红掉,服务器上的 site-dist 不会被半套文件替换。

边界

没有自动回滚 jar 的第二套槽位:app--build 后直接 up。静态站有 site-dist-old 可人工切回。这是有意的不对称——页面更新更频繁,也更需要原子切换。

最后更新: