feat: migrate releases to git.awaioi.com

This commit is contained in:
Qiufeng
2026-08-05 06:08:47 +08:00
parent 670dfb0c7a
commit 5d7112ce31
13 changed files with 132 additions and 76 deletions
+23 -32
View File
@@ -73,7 +73,7 @@ Administrator -> System Update UI -> erp-update helper
克隆仓库并进入开发分支:
```bash
git clone git@38.76.196.225:awaioi/ERP.git
git clone https://git.awaioi.com/awaioi/ERP.git
cd ERP
git switch dev
git config core.hooksPath .githooks
@@ -111,7 +111,7 @@ PostgreSQL-only 正式构建:
```bash
cd oa-backend
./gradlew clean bootJar -PreleaseVersion=0.3.7 -PproductionBuild=true
./gradlew clean bootJar -PreleaseVersion=0.3.8 -PproductionBuild=true
```
正式 JAR 必须包含 PostgreSQL 驱动,并且不得包含 `sqlite-jdbc``hibernate-community-dialects`
@@ -168,15 +168,14 @@ https://resonant-elated-launder.ngrok-free.dev/
### Linux 一键安装
生产环境应先为 Gitea 配置 HTTPS
官方 Gitea 已启用 HTTPSLinux 可直接执行
```bash
curl -fsSL https://git.example.com/awaioi/ERP/raw/branch/main/install.sh \
| sudo -E bash -s -- \
--gitea-url https://git.example.com \
--repository awaioi/ERP
curl -fsSL https://git.awaioi.com/awaioi/ERP/raw/branch/main/install.sh | sudo -E bash
```
安装器默认使用 `https://git.awaioi.com``awaioi/ERP`;私有镜像或分叉仓库仍可通过 `--gitea-url``--repository` 覆盖。
命令行只做环境准备:优先使用已有的 Java 17+,缺少时通过当前系统的 `apt-get``dnf``yum``zypper` 或 Homebrew 安装 Java、curl、tar、Python 3 和 OpenSSL 3,然后下载并启动独立安装器。数据库信息不在命令行输入。
Linux 生产服务要求主机使用 systemd;没有 systemd 的容器、WSL 或精简系统只能显式使用 `--no-service` 做开发验收,在线更新也会保持关闭。
@@ -184,7 +183,7 @@ Linux 生产服务要求主机使用 systemd;没有 systemd 的容器、WSL
安装器启动后会输出带一次性令牌的访问地址。优先级依次为:命令行 `--public-url`(或 `ERP_PUBLIC_URL`)、HTTPS 服务探测到的公网 IP、局域网 IP。无论使用哪一种方式,都会同时输出仅服务器本机可用的 `Local URL`;公网探测失败时还会明确提示正在回退局域网地址。公网服务器建议显式传入地址,避免 NAT、多网卡或代理环境识别错误:
```text
Setup URL: http://38.76.196.225:8091/?token=<one-time-token>
Setup URL: https://erp.example.com/?token=<one-time-token>
Local URL: http://127.0.0.1:8091/?token=<one-time-token>
```
@@ -199,33 +198,25 @@ PostgreSQL 必须使用专用空数据库,网页中填写的账号必须是该
macOS 需要 Homebrew,并使用已有 PostgreSQL
```bash
curl -fsSL https://git.example.com/awaioi/ERP/raw/branch/main/install.sh \
| bash -s -- \
--gitea-url https://git.example.com \
--repository awaioi/ERP
curl -fsSL https://git.awaioi.com/awaioi/ERP/raw/branch/main/install.sh | bash
```
### 当前 HTTP 测试服务器
### 当前正式版本
当前 Gitea 地址 `http://38.76.196.225:10099` 只允许用于开发验收
需要固定安装 `v0.3.8` 并验证引导脚本 SHA-256 时
```bash
(
set -e
tmp="$(mktemp)"
trap 'rm -f -- "$tmp"' EXIT
curl -fsSL http://38.76.196.225:10099/awaioi/ERP/raw/tag/v0.3.7/install.sh -o "$tmp"
printf '%s %s\n' '88328b3086ece360d3c05d4a22bee06b03ed3639a454c1fe7b9c04b1da80a980' "$tmp" | sha256sum -c -
sudo -E bash "$tmp" \
--gitea-url http://38.76.196.225:10099 \
--repository awaioi/ERP \
--version 0.3.7 \
--public-url http://38.76.196.225:8091 \
--allow-insecure
curl -fsSL https://git.awaioi.com/awaioi/ERP/raw/tag/v0.3.8/install.sh -o "$tmp"
printf '%s %s\n' '716f6a9ea75659be3c7162d031f1b1fe5e8aa0e82e0101296153842dff9b35d6' "$tmp" | sha256sum -c -
sudo -E bash "$tmp" --version 0.3.8
)
```
只有 `v0.3.7` Release 发布后这条命令才可下载安装包。固定 tag 和 SHA-256 只用于保护当前 HTTP 引导脚本不被传输途中篡改;Release 资产仍会继续执行 Ed25519 和 SHA-256 双重校验。HTTP 会暴露请求、Release 元数据和可能使用的访问令牌,不得作为长期生产方案。
只有 `v0.3.8` Release 发布后这条命令才可下载安装包。引导脚本通过固定 tag 和 SHA-256 校验,Release 资产继续执行 Ed25519 和 SHA-256 双重校验。
### 完整卸载后重装
@@ -236,7 +227,7 @@ curl -fsSL https://git.example.com/awaioi/ERP/raw/branch/main/install.sh \
set -e
tmp="$(mktemp)"
trap 'rm -f -- "$tmp"' EXIT
curl -fsSL http://38.76.196.225:10099/awaioi/ERP/raw/tag/v0.3.7/uninstall.sh -o "$tmp"
curl -fsSL https://git.awaioi.com/awaioi/ERP/raw/tag/v0.3.8/uninstall.sh -o "$tmp"
printf '%s %s\n' '98c56fed2fd4d01874e4ab5a1a4f3ec42ec3e29b315ffd87385a95488d587546' "$tmp" | sha256sum -c -
sudo -E bash "$tmp" --purge-database --yes
)
@@ -291,7 +282,7 @@ location / {
入口只对 `ADMIN` 角色显示,对应前端路由为 `/appdev/update`,后端 API 为 `/api/oa/system-update/*`。页面只显示当前版本、在线最新版本、检查时间、最新版本更新日志、历史正式版本,以及下载、验签、安装、重启和自动回滚进度。顶部和手机入口发现新版本时会显示版本提示。
更新源由安装器写入服务器的 `/etc/kaidi-erp/erp.env`,后台页面不会要求管理员重复填写 Gitea 地址、仓库、Token、通道或 HTTP 开关。需要变更基础设施配置时由服务器运维人员修改 `OA_UPDATE_*` 环境变量并重启服务;公开仓库无需 Token,正式环境应使用 HTTPS。
更新源由安装器写入服务器的 `/etc/kaidi-erp/erp.env`,后台页面不会要求管理员重复填写 Gitea 地址、仓库、Token、通道或 HTTP 开关。`v0.3.8` 启动时会把旧官方地址 `http://38.76.196.225:10099` 自动迁移到 `https://git.awaioi.com`;其他自定义地址保持不变。需要变更基础设施配置时由服务器运维人员修改 `OA_UPDATE_*` 环境变量并重启服务;公开仓库无需 Token,正式环境应使用 HTTPS。
更新过程如下:
@@ -307,7 +298,7 @@ location / {
同一安装目录使用操作系统文件锁,不能并发执行两个更新任务。也可以手工触发:
```bash
/opt/kaidi-erp/current/bin/erp-update install 0.3.7
/opt/kaidi-erp/current/bin/erp-update install 0.3.8
```
应用回滚不等于数据库回滚。包含不可逆 Flyway 迁移的版本必须先保证旧应用仍兼容新结构,并建议在安装配置中启用:
@@ -335,7 +326,7 @@ Gitea 1.27 仓库需要启用 Actions,并配置带 `ubuntu-latest` 标签的
流水线使用 Gitea 内置短期 `GITEA_TOKEN`,权限限定为代码只读、当前仓库 Release 可写。仓库设置只需添加:
- Secret `RELEASE_PRIVATE_KEY_B64`
- 当前纯 HTTP 测试服务器额外添加 Variable `ERP_RELEASE_ALLOW_INSECURE_HTTP=1`Gitea 禁止变量名以保留前缀 `GITEA_``GITHUB_` 开头)
- `ERP_RELEASE_ALLOW_INSECURE_HTTP` 保持未设置;正式 Release API 和资产下载固定使用 HTTPS
签名私钥不得提交到 Git。生成 Secret 值:
@@ -348,8 +339,8 @@ base64 < ~/.config/kaidi-erp/release-signing-key.pem | tr -d '\n'
```bash
git switch main
git pull --ff-only origin main
git tag -a v0.3.7 -m 'Kaidi ERP v0.3.7'
git push origin v0.3.7
git tag -a v0.3.8 -m 'Kaidi ERP v0.3.8'
git push origin v0.3.8
```
发布完成后必须确认 Release 页面存在四个资产,并使用仓库中的 `distribution/release-public-key.pem` 验证签名。私钥与该公钥不匹配时打包脚本会直接失败。
@@ -358,7 +349,7 @@ git push origin v0.3.7
```bash
ERP_RELEASE_PRIVATE_KEY_FILE="$HOME/.config/kaidi-erp/release-signing-key.pem" \
bash scripts/package-release.sh 0.3.7
bash scripts/package-release.sh 0.3.8
```
## 配置参考
@@ -372,7 +363,7 @@ ERP_RELEASE_PRIVATE_KEY_FILE="$HOME/.config/kaidi-erp/release-signing-key.pem" \
| `OA_DB_POOL_MAX` | 最大连接池 | `20` |
| `OA_DB_POOL_MIN` | 最小空闲连接 | `2` |
| `OA_UPDATE_ENABLED` | 启用管理后台在线更新 | 安装服务时为 `true` |
| `OA_UPDATE_GITEA_BASE_URL` | Gitea 外部地址 | 正式安装时写入 |
| `OA_UPDATE_GITEA_BASE_URL` | Gitea 外部地址 | `https://git.awaioi.com` |
| `OA_UPDATE_REPOSITORY` | Release 仓库 | `awaioi/ERP` |
| `OA_UPDATE_CHANNEL` | 更新通道 | `stable` |
| `OA_UPDATE_TOKEN` | 私有仓库下载令牌 | 空;公开仓库不需要 |
@@ -467,7 +458,7 @@ Gitea 仓库尚未发布首个可安装版本,或 Release 缺少四个必需
远程仓库:
```text
git@38.76.196.225:awaioi/ERP.git
https://git.awaioi.com/awaioi/ERP.git
```
## 延伸文档