ci: move server provision logic to script
Some checks failed
CI / verify (push) Has been cancelled

This commit is contained in:
2026-05-07 15:15:00 +08:00
parent d5d3fa1641
commit 6a830b349b
3 changed files with 542 additions and 526 deletions

View File

@@ -17,6 +17,7 @@
- `scripts/deploy/maintenance-status.sh`
- `scripts/build-production-release.sh`
- `scripts/jenkins-checkout-source.sh`
- `scripts/jenkins-server-provision.sh`
- `scripts/deploy/production-web-deploy.sh`
- `scripts/deploy/production-api-deploy.sh`
- `scripts/deploy/production-stdb-publish.sh`
@@ -97,6 +98,17 @@
API 发布阶段只使用上游 API 构建产物,不应回退到上游源码 commit 执行部署脚本;部署脚本应始终取 `SOURCE_BRANCH` 最新提交。否则全量流水线在修复部署脚本后仍可能按旧 `COMMIT_HASH` checkout继续执行不认识新参数的旧版 `production-api-deploy.sh`
### 服务器配置流水线
`Genarrative-Server-Provision` 的 Jenkinsfile 只负责参数、节点路由与调用脚本;服务器配置主体逻辑放在 `scripts/jenkins-server-provision.sh`。不要再把数百行 Bash 内联进 Jenkins `sh ''' ... '''``bash -lc '...'`,否则 Jenkins/Groovy/sh/bash 多层转义会把 `\"``${...}`、sed 表达式等内容二次改写,容易在运行时出现 `syntax error near unexpected token '}'` 这类难定位错误。
该脚本负责安装构建依赖、同步 SpacetimeDB current 目录、安装 systemd/Nginx 配置、创建或保留 `/etc/genarrative/api-server.env`、维护模式配置以及首次服务启动前的 SpacetimeDB client token 初始化。修改后应至少执行:
```bash
bash -n scripts/jenkins-server-provision.sh
git diff --check
```
## Nginx 规则
生产正式入口只保留必要路由: