Skip to content

Commit 4bd83bc

Browse files
authored
feat: 支持 v2 插件、独立前端和签名制品发布 (#130)
* feat: 支持 v2 插件、原生扩展与签名发布 * fix: 修复测试 * feat: 增强宿主 SDK、运行观测与制品维护能力 * feat: 增强文件传输、配置观测与本地开发能力 * feat: 支持 SSE 实时事件流并完善开发脚手架 * feat: 完善长连接鉴权复核与关闭回收 * feat: 增强生命周期与任务关闭可靠性 * feat: 收紧健康检查契约并补齐前端与真实网络验收 * feat: 增加SDK溯源与离线更新工具并验证跨版本兼容 * feat: 增加持久化业务示例与受控 Python 交付 * feat: 增加统一运行诊断与多worker状态观测 * feat: 增加固定目标发布等待与自动验收 * fix: 修复多环境插件部署前缀与代理配置不一致 * fix: 修复测试
1 parent a89aec5 commit 4bd83bc

287 files changed

Lines changed: 41945 additions & 331 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
name: Native Plugin
2+
3+
on:
4+
push:
5+
branches: [master]
6+
paths:
7+
- 'ruoyi-fastapi-backend/plugins/core/**'
8+
- 'ruoyi-fastapi-backend/plugins/examples/rust/**'
9+
- 'ruoyi-fastapi-backend/plugins/examples/python/task_demo/**'
10+
- 'ruoyi-fastapi-backend/scripts/plugin_task_integration.py'
11+
- 'ruoyi-fastapi-backend/scripts/build_native_plugin.py'
12+
- 'ruoyi-fastapi-backend/cli/runtime/plugin/scaffold/**'
13+
- 'ruoyi-fastapi-backend/cli/runtime/plugin/sdk.py'
14+
- 'ruoyi-fastapi-backend/cli/groups/plugin/commands/developer.py'
15+
- 'ruoyi-fastapi-backend/cli/groups/plugin/commands/sdk.py'
16+
- 'ruoyi-fastapi-backend/cli/groups/plugin/commands/artifact*.py'
17+
- 'ruoyi-fastapi-backend/cli/groups/plugin/artifact_controller.py'
18+
- 'ruoyi-fastapi-backend/cli/groups/plugin/command.py'
19+
- 'ruoyi-fastapi-frontend/src/utils/pluginBridge*'
20+
- 'ruoyi-fastapi-backend/pyproject.toml'
21+
- 'ruoyi-fastapi-backend/tests/cli/runtime/plugin/test_runtime_scaffold*.py'
22+
- 'ruoyi-fastapi-backend/tests/cli/runtime/plugin/test_runtime_sdk.py'
23+
- 'ruoyi-fastapi-backend/tests/cli/root/test_plugin_sdk_commands.py'
24+
- 'ruoyi-fastapi-backend/tests/cli/root/test_plugin_artifact_commands.py'
25+
- 'ruoyi-fastapi-backend/tests/cli/root/test_plugin_release_wait.py'
26+
- 'ruoyi-fastapi-backend/tests/plugins/**'
27+
- '.github/workflows/native-plugin.yml'
28+
pull_request:
29+
branches: [master]
30+
paths:
31+
- 'ruoyi-fastapi-backend/plugins/core/**'
32+
- 'ruoyi-fastapi-backend/plugins/examples/rust/**'
33+
- 'ruoyi-fastapi-backend/plugins/examples/python/task_demo/**'
34+
- 'ruoyi-fastapi-backend/scripts/plugin_task_integration.py'
35+
- 'ruoyi-fastapi-backend/scripts/build_native_plugin.py'
36+
- 'ruoyi-fastapi-backend/cli/runtime/plugin/scaffold/**'
37+
- 'ruoyi-fastapi-backend/cli/runtime/plugin/sdk.py'
38+
- 'ruoyi-fastapi-backend/cli/groups/plugin/commands/developer.py'
39+
- 'ruoyi-fastapi-backend/cli/groups/plugin/commands/sdk.py'
40+
- 'ruoyi-fastapi-backend/cli/groups/plugin/commands/artifact*.py'
41+
- 'ruoyi-fastapi-backend/cli/groups/plugin/artifact_controller.py'
42+
- 'ruoyi-fastapi-backend/cli/groups/plugin/command.py'
43+
- 'ruoyi-fastapi-frontend/src/utils/pluginBridge*'
44+
- 'ruoyi-fastapi-backend/pyproject.toml'
45+
- 'ruoyi-fastapi-backend/tests/cli/runtime/plugin/test_runtime_scaffold*.py'
46+
- 'ruoyi-fastapi-backend/tests/cli/runtime/plugin/test_runtime_sdk.py'
47+
- 'ruoyi-fastapi-backend/tests/cli/root/test_plugin_sdk_commands.py'
48+
- 'ruoyi-fastapi-backend/tests/cli/root/test_plugin_artifact_commands.py'
49+
- 'ruoyi-fastapi-backend/tests/cli/root/test_plugin_release_wait.py'
50+
- 'ruoyi-fastapi-backend/tests/plugins/**'
51+
- '.github/workflows/native-plugin.yml'
52+
workflow_dispatch:
53+
54+
jobs:
55+
native:
56+
strategy:
57+
fail-fast: false
58+
matrix:
59+
os: [ubuntu-latest, windows-latest]
60+
python: ['3.10', '3.11', '3.12', '3.13']
61+
runs-on: ${{ matrix.os }}
62+
defaults:
63+
run:
64+
working-directory: ruoyi-fastapi-backend
65+
steps:
66+
- uses: actions/checkout@v5
67+
- uses: actions/setup-python@v6
68+
with:
69+
python-version: ${{ matrix.python }}
70+
cache: pip
71+
cache-dependency-path: ruoyi-fastapi-backend/requirements.txt
72+
- name: Install host and build dependencies
73+
run: python -m pip install -r requirements.txt 'maturin>=1.15,<2' pytest pytest-asyncio aiosqlite
74+
- name: Install Rust
75+
run: rustup toolchain install 1.99.0 --profile minimal --component rustfmt --component clippy
76+
- name: Select Rust
77+
run: rustup default 1.99.0
78+
- name: Check Rust formatting
79+
run: cargo fmt --manifest-path plugins/examples/rust/rust_demo/Cargo.toml --check
80+
- name: Verify v1 and v2 plugin scaffolds
81+
run: python -m pytest tests/cli/runtime/plugin/test_runtime_scaffold.py tests/cli/runtime/plugin/test_runtime_scaffold_v2.py -q
82+
- name: Verify SDK provenance and offline update commands
83+
run: python -m pytest tests/cli/runtime/plugin/test_runtime_sdk.py tests/cli/root/test_plugin_sdk_commands.py -q
84+
- name: Verify persistent task plugin
85+
run: python -m pytest tests/plugins/examples/test_task_demo.py -q
86+
- name: Build and assemble source-free plugin
87+
run: python scripts/build_native_plugin.py --output target/native-package
88+
- name: Check Rust code
89+
run: cargo clippy --manifest-path plugins/examples/rust/rust_demo/Cargo.toml --locked -- -D warnings
90+
- name: Exercise native library through the host runtime
91+
env:
92+
RUOYI_NATIVE_PLUGIN_DIR: ${{ github.workspace }}/ruoyi-fastapi-backend/target/native-package/rust_demo
93+
run: python -m pytest tests/plugins/native tests/plugins/core/native tests/plugins/core/runtime/test_host_services.py tests/plugins/core/runtime/test_job_dispatcher.py -q
94+
- name: Verify signed artifacts and maintenance releases
95+
env:
96+
RUOYI_NATIVE_PLUGIN_DIR: ${{ github.workspace }}/ruoyi-fastapi-backend/target/native-package/rust_demo
97+
run: python -m pytest tests/plugins/core/artifacts tests/plugins/core/deployment tests/plugins/core/management/test_release_dao.py tests/plugins/core/management/test_artifact_views.py tests/module_plugin/controller/test_plugin_release_controller.py tests/cli/root/test_plugin_artifact_commands.py tests/cli/root/test_plugin_release_wait.py tests/sql/test_plugin_release_schema.py -q
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
name: Plugin Frontend Tests
2+
3+
on:
4+
push:
5+
branches: [master]
6+
paths:
7+
- 'ruoyi-fastapi-frontend/src/api/system/plugin.js'
8+
- 'ruoyi-fastapi-frontend/src/components/PluginFrame/**'
9+
- 'ruoyi-fastapi-frontend/src/views/system/plugin/**'
10+
- 'ruoyi-fastapi-frontend/src/utils/**'
11+
- 'ruoyi-fastapi-frontend/src/plugins/**'
12+
- 'ruoyi-fastapi-frontend/src/router/**'
13+
- 'ruoyi-fastapi-frontend/src/store/modules/permission.js'
14+
- 'ruoyi-fastapi-frontend/src/store/modules/user.js'
15+
- 'ruoyi-fastapi-frontend/src/permission.js'
16+
- 'ruoyi-fastapi-frontend/plugins/**'
17+
- 'ruoyi-fastapi-frontend/tests/plugins/**'
18+
- 'ruoyi-fastapi-frontend/tests/run-tests.js'
19+
- 'ruoyi-fastapi-frontend/package.json'
20+
- 'ruoyi-fastapi-frontend/package-lock.json'
21+
- 'ruoyi-fastapi-frontend/vite.config.js'
22+
- 'ruoyi-fastapi-frontend/vite/**'
23+
- 'ruoyi-fastapi-backend/plugins/examples/python/bundle_demo/web/**'
24+
- '.github/workflows/plugin-frontend.yml'
25+
pull_request:
26+
branches: [master]
27+
paths:
28+
- 'ruoyi-fastapi-frontend/src/api/system/plugin.js'
29+
- 'ruoyi-fastapi-frontend/src/components/PluginFrame/**'
30+
- 'ruoyi-fastapi-frontend/src/views/system/plugin/**'
31+
- 'ruoyi-fastapi-frontend/src/utils/**'
32+
- 'ruoyi-fastapi-frontend/src/plugins/**'
33+
- 'ruoyi-fastapi-frontend/src/router/**'
34+
- 'ruoyi-fastapi-frontend/src/store/modules/permission.js'
35+
- 'ruoyi-fastapi-frontend/src/store/modules/user.js'
36+
- 'ruoyi-fastapi-frontend/src/permission.js'
37+
- 'ruoyi-fastapi-frontend/plugins/**'
38+
- 'ruoyi-fastapi-frontend/tests/plugins/**'
39+
- 'ruoyi-fastapi-frontend/tests/run-tests.js'
40+
- 'ruoyi-fastapi-frontend/package.json'
41+
- 'ruoyi-fastapi-frontend/package-lock.json'
42+
- 'ruoyi-fastapi-frontend/vite.config.js'
43+
- 'ruoyi-fastapi-frontend/vite/**'
44+
- 'ruoyi-fastapi-backend/plugins/examples/python/bundle_demo/web/**'
45+
- '.github/workflows/plugin-frontend.yml'
46+
workflow_dispatch:
47+
48+
permissions:
49+
contents: read
50+
51+
jobs:
52+
plugins:
53+
runs-on: ubuntu-latest
54+
timeout-minutes: 15
55+
defaults:
56+
run:
57+
working-directory: ruoyi-fastapi-frontend
58+
steps:
59+
- uses: actions/checkout@v5
60+
- uses: actions/setup-node@v6
61+
with:
62+
node-version: '22'
63+
cache: npm
64+
cache-dependency-path: ruoyi-fastapi-frontend/package.json
65+
- name: Install frontend dependencies
66+
# This repository does not commit npm lockfiles, so npm ci is not available.
67+
run: npm install --no-audit --no-fund --package-lock=false
68+
- name: Verify plugin bridge, sessions and management views
69+
run: npm run test:plugin
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
name: Plugin Network Smoke
2+
3+
on:
4+
pull_request:
5+
branches: [master]
6+
paths:
7+
- 'ruoyi-fastapi-backend/plugins/**'
8+
- 'ruoyi-fastapi-backend/module_plugin/**'
9+
- 'ruoyi-fastapi-backend/module_admin/service/login_service.py'
10+
- 'ruoyi-fastapi-backend/common/**'
11+
- 'ruoyi-fastapi-backend/config/**'
12+
- 'ruoyi-fastapi-backend/middlewares/**'
13+
- 'ruoyi-fastapi-backend/utils/**'
14+
- 'ruoyi-fastapi-backend/tests/**'
15+
- 'ruoyi-fastapi-backend/requirements.txt'
16+
- 'ruoyi-fastapi-backend/pyproject.toml'
17+
- 'ruoyi-fastapi-frontend/**'
18+
- '.github/workflows/plugin-network-smoke.yml'
19+
workflow_dispatch:
20+
21+
permissions:
22+
contents: read
23+
24+
jobs:
25+
browser:
26+
runs-on: ubuntu-latest
27+
timeout-minutes: 15
28+
defaults:
29+
run:
30+
working-directory: ruoyi-fastapi-backend
31+
env:
32+
RUOYI_PLUGIN_NETWORK_SMOKE: '1'
33+
# The fixture replaces account, DB and Redis access; no external service is used.
34+
DB_SOURCES: '{"primary":{"db_type":"mysql","db_host":"127.0.0.1","db_port":3306,"db_username":"network-smoke","db_password":"network-smoke","db_database":"network-smoke"}}'
35+
JWT_SECRET_KEY: 'isolated-plugin-network-smoke-ci-only'
36+
steps:
37+
- uses: actions/checkout@v5
38+
- uses: actions/setup-python@v6
39+
with:
40+
python-version: '3.12'
41+
cache: pip
42+
cache-dependency-path: ruoyi-fastapi-backend/requirements.txt
43+
- uses: actions/setup-node@v6
44+
with:
45+
node-version: '22'
46+
cache: npm
47+
cache-dependency-path: ruoyi-fastapi-frontend/package.json
48+
- name: Install host and browser test dependencies
49+
run: python -m pip install -r requirements.txt pytest pytest-asyncio aiosqlite playwright
50+
- name: Install Chromium
51+
run: python -m playwright install --with-deps chromium
52+
- name: Install frontend dependencies
53+
# This repository does not commit npm lockfiles, so npm ci is not available.
54+
run: npm --prefix ../ruoyi-fastapi-frontend install --no-audit --no-fund --package-lock=false
55+
- name: Verify HTTPS proxy, iframe sessions and long connections
56+
run: python -m pytest tests/plugins/integration/test_network_smoke.py -v --junitxml=target/plugin-network-smoke/results.xml
57+
- name: Upload browser trace, screenshots and proxy log
58+
if: always()
59+
uses: actions/upload-artifact@v4
60+
with:
61+
name: plugin-network-smoke
62+
path: ruoyi-fastapi-backend/target/plugin-network-smoke/
63+
retention-days: 7
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
name: Plugin Release Integration
2+
3+
on:
4+
pull_request:
5+
branches: [master]
6+
paths:
7+
- 'ruoyi-fastapi-backend/plugins/core/**'
8+
- 'ruoyi-fastapi-backend/plugins/examples/python/task_demo/**'
9+
- 'ruoyi-fastapi-frontend/src/utils/pluginBridge.js'
10+
- 'ruoyi-fastapi-backend/config/**'
11+
- 'ruoyi-fastapi-backend/cli/groups/plugin/**'
12+
- 'ruoyi-fastapi-backend/cli/runtime/plugin/**'
13+
- 'ruoyi-fastapi-backend/module_plugin/**'
14+
- 'ruoyi-fastapi-backend/server.py'
15+
- 'ruoyi-fastapi-backend/app.py'
16+
- 'ruoyi-fastapi-backend/sql/ruoyi-fastapi*.sql'
17+
- 'ruoyi-fastapi-backend/scripts/plugin_release_integration.py'
18+
- 'ruoyi-fastapi-backend/scripts/plugin_task_integration.py'
19+
- 'ruoyi-fastapi-backend/tests/plugins/**'
20+
- 'ruoyi-fastapi-backend/tests/cli/root/test_plugin_artifact_commands.py'
21+
- 'ruoyi-fastapi-backend/tests/cli/root/test_plugin_release_wait.py'
22+
- 'ruoyi-fastapi-backend/tests/cli/root/test_plugin_diagnostics.py'
23+
- 'ruoyi-fastapi-backend/tests/cli/runtime/plugin/**'
24+
- 'ruoyi-fastapi-backend/tests/module_plugin/**'
25+
- 'ruoyi-fastapi-backend/tests/server/test_plugin_runtime.py'
26+
- 'ruoyi-fastapi-backend/tests/sql/test_plugin_release_schema.py'
27+
- 'ruoyi-fastapi-backend/pyproject.toml'
28+
- 'ruoyi-fastapi-backend/requirements.txt'
29+
- 'ruoyi-fastapi-backend/requirements-pg.txt'
30+
- '.github/workflows/plugin-release-integration.yml'
31+
workflow_dispatch:
32+
33+
permissions:
34+
contents: read
35+
36+
jobs:
37+
release:
38+
runs-on: ubuntu-latest
39+
strategy:
40+
fail-fast: false
41+
matrix:
42+
python: ['3.10', '3.11', '3.12', '3.13']
43+
defaults:
44+
run:
45+
working-directory: ruoyi-fastapi-backend
46+
services:
47+
mysql:
48+
image: mysql:8.0
49+
env:
50+
MYSQL_ROOT_PASSWORD: ci-only-mysql
51+
ports: ['3306:3306']
52+
options: >-
53+
--health-cmd="mysqladmin ping -h localhost"
54+
--health-interval=10s --health-timeout=5s --health-retries=12
55+
postgres:
56+
image: postgres:14
57+
env:
58+
POSTGRES_PASSWORD: ci-only-postgres
59+
ports: ['5432:5432']
60+
options: >-
61+
--health-cmd="pg_isready -U postgres"
62+
--health-interval=10s --health-timeout=5s --health-retries=12
63+
redis:
64+
image: redis:6.2
65+
ports: ['6379:6379']
66+
options: >-
67+
--health-cmd="redis-cli ping"
68+
--health-interval=10s --health-timeout=5s --health-retries=12
69+
env:
70+
RUOYI_PLUGIN_IT_ALLOW: '1'
71+
RUOYI_IT_MYSQL_PASSWORD: ci-only-mysql
72+
RUOYI_IT_PG_PASSWORD: ci-only-postgres
73+
RUOYI_IT_REDIS_PASSWORD: ''
74+
steps:
75+
- uses: actions/checkout@v5
76+
- uses: actions/setup-python@v6
77+
with:
78+
python-version: ${{ matrix.python }}
79+
cache: pip
80+
cache-dependency-path: ruoyi-fastapi-backend/requirements*.txt
81+
- name: Install host dependencies
82+
run: python -m pip install -r requirements.txt -r requirements-pg.txt
83+
- uses: actions/setup-node@v5
84+
with:
85+
node-version: '22'
86+
- name: Test and build task plugin bundle
87+
run: |
88+
npm --prefix plugins/examples/python/task_demo/web install --no-audit --no-fund --package-lock=false
89+
npm --prefix plugins/examples/python/task_demo/web test
90+
npm --prefix plugins/examples/python/task_demo/web run build
91+
- name: Verify MySQL and Redis maintenance releases
92+
run: python scripts/plugin_release_integration.py --engine mysql
93+
- name: Verify PostgreSQL and Redis maintenance releases
94+
run: python scripts/plugin_release_integration.py --engine postgresql

‎ruoyi-fastapi-backend/.env.dev‎

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,3 +283,15 @@ PLUGIN_DEPENDENCY_PIP_INDEX_URL = ''
283283
PLUGIN_DEPENDENCY_NPM_REGISTRY = ''
284284
# 单条依赖安装命令超时时间(秒)
285285
PLUGIN_DEPENDENCY_INSTALL_TIMEOUT = 600
286+
287+
# -------- 签名插件制品与维护发布配置 --------
288+
# 是否启用签名插件制品;启用前必须配置外部信任公钥文件
289+
PLUGIN_ARTIFACT_ENABLED = false
290+
# 不可变制品存储目录,相对路径基于后端项目根目录解析
291+
PLUGIN_ARTIFACT_STORE = 'vf_admin/plugin_artifacts'
292+
# 宿主管理的发布者公钥 JSON 文件路径;启用时必填,相对路径基于后端项目根目录解析
293+
PLUGIN_ARTIFACT_TRUST_FILE = ''
294+
# 宿主 worker 心跳间隔(秒),取值范围为 1 至 60
295+
PLUGIN_ARTIFACT_HEARTBEAT_SECONDS = 15
296+
# 宿主 worker 心跳失效时间(秒),取值范围为 3 至 600,且不得小于心跳间隔的三倍
297+
PLUGIN_ARTIFACT_WORKER_TTL_SECONDS = 60

‎ruoyi-fastapi-backend/.env.dockermy‎

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,3 +283,15 @@ PLUGIN_DEPENDENCY_PIP_INDEX_URL = ''
283283
PLUGIN_DEPENDENCY_NPM_REGISTRY = ''
284284
# 单条依赖安装命令超时时间(秒)
285285
PLUGIN_DEPENDENCY_INSTALL_TIMEOUT = 600
286+
287+
# -------- 签名插件制品与维护发布配置 --------
288+
# 是否启用签名插件制品;启用前必须配置外部信任公钥文件
289+
PLUGIN_ARTIFACT_ENABLED = false
290+
# 不可变制品存储目录,相对路径基于后端项目根目录解析
291+
PLUGIN_ARTIFACT_STORE = 'vf_admin/plugin_artifacts'
292+
# 宿主管理的发布者公钥 JSON 文件路径;启用时必填,相对路径基于后端项目根目录解析
293+
PLUGIN_ARTIFACT_TRUST_FILE = ''
294+
# 宿主 worker 心跳间隔(秒),取值范围为 1 至 60
295+
PLUGIN_ARTIFACT_HEARTBEAT_SECONDS = 15
296+
# 宿主 worker 心跳失效时间(秒),取值范围为 3 至 600,且不得小于心跳间隔的三倍
297+
PLUGIN_ARTIFACT_WORKER_TTL_SECONDS = 60

‎ruoyi-fastapi-backend/.env.dockerpg‎

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,3 +283,15 @@ PLUGIN_DEPENDENCY_PIP_INDEX_URL = ''
283283
PLUGIN_DEPENDENCY_NPM_REGISTRY = ''
284284
# 单条依赖安装命令超时时间(秒)
285285
PLUGIN_DEPENDENCY_INSTALL_TIMEOUT = 600
286+
287+
# -------- 签名插件制品与维护发布配置 --------
288+
# 是否启用签名插件制品;启用前必须配置外部信任公钥文件
289+
PLUGIN_ARTIFACT_ENABLED = false
290+
# 不可变制品存储目录,相对路径基于后端项目根目录解析
291+
PLUGIN_ARTIFACT_STORE = 'vf_admin/plugin_artifacts'
292+
# 宿主管理的发布者公钥 JSON 文件路径;启用时必填,相对路径基于后端项目根目录解析
293+
PLUGIN_ARTIFACT_TRUST_FILE = ''
294+
# 宿主 worker 心跳间隔(秒),取值范围为 1 至 60
295+
PLUGIN_ARTIFACT_HEARTBEAT_SECONDS = 15
296+
# 宿主 worker 心跳失效时间(秒),取值范围为 3 至 600,且不得小于心跳间隔的三倍
297+
PLUGIN_ARTIFACT_WORKER_TTL_SECONDS = 60

‎ruoyi-fastapi-backend/.env.prod‎

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,3 +283,15 @@ PLUGIN_DEPENDENCY_PIP_INDEX_URL = ''
283283
PLUGIN_DEPENDENCY_NPM_REGISTRY = ''
284284
# 单条依赖安装命令超时时间(秒)
285285
PLUGIN_DEPENDENCY_INSTALL_TIMEOUT = 600
286+
287+
# -------- 签名插件制品与维护发布配置 --------
288+
# 是否启用签名插件制品;启用前必须配置外部信任公钥文件
289+
PLUGIN_ARTIFACT_ENABLED = false
290+
# 不可变制品存储目录,相对路径基于后端项目根目录解析
291+
PLUGIN_ARTIFACT_STORE = 'vf_admin/plugin_artifacts'
292+
# 宿主管理的发布者公钥 JSON 文件路径;启用时必填,相对路径基于后端项目根目录解析
293+
PLUGIN_ARTIFACT_TRUST_FILE = ''
294+
# 宿主 worker 心跳间隔(秒),取值范围为 1 至 60
295+
PLUGIN_ARTIFACT_HEARTBEAT_SECONDS = 15
296+
# 宿主 worker 心跳失效时间(秒),取值范围为 3 至 600,且不得小于心跳间隔的三倍
297+
PLUGIN_ARTIFACT_WORKER_TTL_SECONDS = 60

0 commit comments

Comments
 (0)