Compare commits
49
Commits
08396a6e23
..
v2.4.2
No files matched your search
@@ -31,7 +31,7 @@ jobs:
|
|||||||
- name: Set up .NET
|
- name: Set up .NET
|
||||||
uses: https://github.com/actions/setup-dotnet@v4
|
uses: https://github.com/actions/setup-dotnet@v4
|
||||||
with:
|
with:
|
||||||
dotnet-version: "10.0.302"
|
dotnet-version: "10.0.400"
|
||||||
|
|
||||||
- name: Set up Node.js
|
- name: Set up Node.js
|
||||||
uses: https://github.com/actions/setup-node@v4
|
uses: https://github.com/actions/setup-node@v4
|
||||||
@@ -46,6 +46,11 @@ jobs:
|
|||||||
npm ci
|
npm ci
|
||||||
npm run build
|
npm run build
|
||||||
|
|
||||||
|
- name: Install Chinese PDF font for backend tests
|
||||||
|
run: |
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install --yes fonts-noto-cjk
|
||||||
|
|
||||||
- name: Run backend tests
|
- name: Run backend tests
|
||||||
run: dotnet test Jiaowu.slnx --configuration Release
|
run: dotnet test Jiaowu.slnx --configuration Release
|
||||||
|
|
||||||
@@ -73,7 +78,7 @@ jobs:
|
|||||||
echo "version=$version" >> "$GITHUB_OUTPUT"
|
echo "version=$version" >> "$GITHUB_OUTPUT"
|
||||||
echo "profile=$profile" >> "$GITHUB_OUTPUT"
|
echo "profile=$profile" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
- name: Build self-contained platform packages
|
- name: Build framework-dependent platform packages
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
bash ./scripts/publish-platform-packages.sh \
|
bash ./scripts/publish-platform-packages.sh \
|
||||||
@@ -155,7 +160,7 @@ jobs:
|
|||||||
- Windows x64:`.zip`
|
- Windows x64:`.zip`
|
||||||
- Linux x64 / ARM64:`.tar.gz`
|
- Linux x64 / ARM64:`.tar.gz`
|
||||||
- `SHA256SUMS`:发布包校验值
|
- `SHA256SUMS`:发布包校验值
|
||||||
- 自包含程序包无需预装 .NET 或 ASP.NET Core Runtime
|
- 二进制程序包不包含 .NET 或 ASP.NET Core Runtime;请先安装匹配版本的 ASP.NET Core Runtime
|
||||||
|
|
||||||
Windows ARM64 与 macOS Intel / Apple Silicon 包可通过手动运行工作流并启用扩展平台生成。
|
Windows ARM64 与 macOS Intel / Apple Silicon 包可通过手动运行工作流并启用扩展平台生成。
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
FROM --platform=$BUILDPLATFORM node:24-alpine AS frontend
|
FROM --platform=$BUILDPLATFORM node:24-alpine AS frontend
|
||||||
WORKDIR /source
|
WORKDIR /source
|
||||||
|
COPY versions.props ./
|
||||||
COPY web/package.json web/package-lock.json ./web/
|
COPY web/package.json web/package-lock.json ./web/
|
||||||
RUN npm --prefix web ci
|
RUN npm --prefix web ci
|
||||||
COPY web/ ./web/
|
COPY web/ ./web/
|
||||||
@@ -11,6 +12,7 @@ FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:10.0-alpine AS build
|
|||||||
ARG TARGETARCH
|
ARG TARGETARCH
|
||||||
WORKDIR /source
|
WORKDIR /source
|
||||||
COPY global.json ./
|
COPY global.json ./
|
||||||
|
COPY versions.props ./
|
||||||
COPY .env.example ./
|
COPY .env.example ./
|
||||||
COPY src/Jiaowu.Api/Jiaowu.Api.csproj ./src/Jiaowu.Api/
|
COPY src/Jiaowu.Api/Jiaowu.Api.csproj ./src/Jiaowu.Api/
|
||||||
RUN dotnet restore ./src/Jiaowu.Api/Jiaowu.Api.csproj --arch "$TARGETARCH"
|
RUN dotnet restore ./src/Jiaowu.Api/Jiaowu.Api.csproj --arch "$TARGETARCH"
|
||||||
|
|||||||
@@ -67,6 +67,14 @@ npm run cap:open:android
|
|||||||
并记录签到设备摘要、IP、失败次数和异常频率,供任课教师在考勤明细中复核。Android
|
并记录签到设备摘要、IP、失败次数和异常频率,供任课教师在考勤明细中复核。Android
|
||||||
最低版本为 API 26;相机和精确位置权限均按需申请。
|
最低版本为 API 26;相机和精确位置权限均按需申请。
|
||||||
|
|
||||||
|
### Web/PWA 应用
|
||||||
|
|
||||||
|
浏览器通过 HTTPS 打开系统后,可使用浏览器的“安装应用”功能将明序教务固定到桌面或
|
||||||
|
开始菜单。PWA 会缓存应用界面与静态资源;接口请求始终走网络,不会离线缓存登录态、
|
||||||
|
成绩或其他业务数据。发现新版本时由用户确认刷新,避免正在填写表单时被强制中断。
|
||||||
|
Capacitor Android 构建会自动禁用 PWA Service Worker,仍使用原生能力和独立的 OTA
|
||||||
|
更新流程。
|
||||||
|
|
||||||
### App 前端热更新
|
### App 前端热更新
|
||||||
|
|
||||||
App 内置自建 OTA 更新器。它只更新 `dist` 中的 HTML、JavaScript、CSS 和静态资源;
|
App 内置自建 OTA 更新器。它只更新 `dist` 中的 HTML、JavaScript、CSS 和静态资源;
|
||||||
@@ -79,16 +87,18 @@ App 内置自建 OTA 更新器。它只更新 `dist` 中的 HTML、JavaScript、
|
|||||||
```powershell
|
```powershell
|
||||||
Set-Location web
|
Set-Location web
|
||||||
npm ci
|
npm ci
|
||||||
npm run ota:package -- --version 1.0.1
|
npm run ota:package
|
||||||
```
|
```
|
||||||
|
|
||||||
ZIP 会生成到 `.artifacts/app-updates`,根目录直接包含 `index.html`。使用
|
ZIP 会生成到 `.artifacts/app-updates`,根目录直接包含 `index.html`,其版本固定取自
|
||||||
|
`versions.props` 的 `JiaowuFrontendVersion`(传入 `--version` 时也必须一致)。使用
|
||||||
SuperAdmin 进入“运维与审计 → App 前端热更新”,上传 ZIP,填写目标平台、通道和
|
SuperAdmin 进入“运维与审计 → App 前端热更新”,上传 ZIP,填写目标平台、通道和
|
||||||
兼容的原生版本后先保存为草稿,再执行发布。当前 Android 工程的 `versionName` 为
|
兼容的原生版本后先保存为草稿,再执行发布。当前 Android 工程的 `versionName` 为
|
||||||
`1.0`,因此对应更新包的“兼容原生版本”应填写 `1.0`。
|
`1.0`,因此对应更新包的“兼容原生版本”应填写 `1.0`。
|
||||||
|
|
||||||
App 启动后向 `/api/app-updates/latest` 检查版本,在后台下载并校验服务端提供的
|
App 启动、以及从后台回到前台超过 5 分钟后,会向 `/api/app-updates/latest` 检查版本,
|
||||||
SHA-256,下次启动时切换。新资源若未能成功启动,原生更新器会自动回滚。再次发布
|
在后台下载并校验服务端提供的 SHA-256;切到后台或下次启动时切换,并保留当前页面地址。
|
||||||
|
新资源若未能成功启动,原生更新器会自动回滚。再次发布
|
||||||
已归档版本即可回滚正式通道;不同原生版本、Android/iOS、测试/正式通道彼此隔离。
|
已归档版本即可回滚正式通道;不同原生版本、Android/iOS、测试/正式通道彼此隔离。
|
||||||
更新版本元数据和 ZIP 保存在数据库中,部署新服务端版本前必须先执行
|
更新版本元数据和 ZIP 保存在数据库中,部署新服务端版本前必须先执行
|
||||||
`--migrate-only`。
|
`--migrate-only`。
|
||||||
@@ -184,6 +194,14 @@ Sso__CallbackUrl=https://jiaowu.example.edu.cn/signin-keycloak
|
|||||||
显示当前生效的完整回调地址。多实例部署应配置 Redis,以便任意实例都能兑换两分钟内
|
显示当前生效的完整回调地址。多实例部署应配置 Redis,以便任意实例都能兑换两分钟内
|
||||||
有效、使用后即删除的 SSO 登录码及五分钟内有效的绑定意图。
|
有效、使用后即删除的 SSO 登录码及五分钟内有效的绑定意图。
|
||||||
|
|
||||||
|
Android App 使用系统浏览器完成 Keycloak 登录,再通过 `https://eis.biss.click/sso/callback`
|
||||||
|
或 `/sso/bind` 的 Android App Link 回到应用;Keycloak 的 Valid redirect URI 仍然只配置
|
||||||
|
`Sso__CallbackUrl`(即 `/signin-keycloak`),不要配置 `mingxu://`。正式发布前,将 Play
|
||||||
|
App Signing 证书的 SHA-256 指纹写入 `web/public/.well-known/assetlinks.json`,并确保该文件
|
||||||
|
以 `application/json` 在 `https://eis.biss.click/.well-known/assetlinks.json` 可匿名访问。当前
|
||||||
|
配置的包名为 `edu.mingxu.jiaowu`;站点域名或正式签名证书变更时必须同时更新此文件和 Android
|
||||||
|
Manifest 后重新签名发布 APK/AAB,此类变更不能通过 OTA 下发。
|
||||||
|
|
||||||
用户登录后可从页面右上角进入“个人账户”,主动绑定或解除 Keycloak 账号。主动绑定先
|
用户登录后可从页面右上角进入“个人账户”,主动绑定或解除 Keycloak 账号。主动绑定先
|
||||||
使用当前 JWT 创建五分钟有效的一次性绑定意图,再跳转 Keycloak;回调只能绑定到发起该
|
使用当前 JWT 创建五分钟有效的一次性绑定意图,再跳转 Keycloak;回调只能绑定到发起该
|
||||||
意图的本地账号。解绑需要再次验证本地密码,避免仅凭未锁屏的登录会话解除身份关联。
|
意图的本地账号。解绑需要再次验证本地密码,避免仅凭未锁屏的登录会话解除身份关联。
|
||||||
|
|||||||
Loaded 3 of 127 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user