worshop work
This commit is contained in:
parent
0d44c65ea5
commit
3829a4a83d
92 changed files with 487 additions and 110 deletions
|
|
@ -1,5 +1,7 @@
|
|||
# Decision 0001: Keep `screen` As The Shared Backend
|
||||
|
||||
Workspace reference: [`GSP-WORKSPACE.md`](../../../GSP-WORKSPACE.md)
|
||||
|
||||
## Status
|
||||
|
||||
Accepted
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
# Decision 0002: Agent-Truthed Status Detection
|
||||
|
||||
Workspace reference: [`GSP-WORKSPACE.md`](../../../GSP-WORKSPACE.md)
|
||||
|
||||
## Status
|
||||
|
||||
Accepted
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
# Decision 0003: First-Class Companion Programs
|
||||
|
||||
Workspace reference: [`GSP-WORKSPACE.md`](../../../GSP-WORKSPACE.md)
|
||||
|
||||
## Status
|
||||
|
||||
Accepted
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
# Decision 0004: Server Content Manager Is The Workshop Layer
|
||||
|
||||
Workspace reference: [`GSP-WORKSPACE.md`](../../../GSP-WORKSPACE.md)
|
||||
|
||||
## Status
|
||||
|
||||
Accepted, Panel-side orchestration active
|
||||
|
|
@ -10,7 +12,7 @@ Accepted, Panel-side orchestration active
|
|||
|
||||
Phase 1 implements this decision by routing the user-facing Workshop install flow through `addonsmanager/workshop_content.php` and suppressing the standalone `steam_workshop` monitor button.
|
||||
|
||||
The current implementation keeps Workshop business logic in the Panel. Agents are generic executors: the Panel writes manifests, stages scripts, invokes `exec`, reads logs/results, and updates database state. New first-class Workshop subsystems should not be added to `Agent-Windows` or `Agent_Linux` unless a future decision explicitly changes this.
|
||||
The current implementation keeps Workshop business logic in the Panel. Agents are generic executors: the Panel writes manifests, writes generated per-job scripts, invokes `exec`, reads logs/results, and updates database state. New first-class Workshop subsystems should not be added to `Agent-Windows` or `Agent_Linux` unless a future decision explicitly changes this.
|
||||
|
||||
## Reasoning
|
||||
|
||||
|
|
@ -32,10 +34,10 @@ The current implementation keeps Workshop business logic in the Panel. Agents ar
|
|||
|
||||
- Workshop input accepts numeric IDs or Steam URLs, then stores numeric IDs only.
|
||||
- Manifests are written under the server home in `gsp_server_content`.
|
||||
- Bundled Linux/Cygwin scripts are copied from the Panel module to an agent-managed folder under the server home before execution.
|
||||
- These scripts are Panel-owned deployment artifacts, not persistent agent features.
|
||||
- Default script names are treated as bundled handlers, not as existing agent paths.
|
||||
- Missing custom scripts fall back to bundled handlers and log the fallback.
|
||||
- A generated Linux/Cygwin-compatible job script is written under `gsp_server_content/jobs/workshop/` before execution.
|
||||
- The generated job script creates a temporary SteamCMD runscript and runs SteamCMD with `+runscript`.
|
||||
- Default script names are not treated as existing agent paths.
|
||||
- Static custom Workshop scripts are deprecated for the primary path and logged if encountered.
|
||||
- Known Workshop items are cataloged in `server_content_workshop_catalog`.
|
||||
- Per-server item state, enablement, load order, update policy, and pending action are stored in `server_content_workshop`.
|
||||
- Scheduler integrates via `workshop_update`, `workshop_update_and_restart`, `workshop_download_only`, and `workshop_install_pending_on_restart`.
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
# Decision 0005: Keep Managed Control Paths Outside Customer-Easy Edit Paths
|
||||
|
||||
Workspace reference: [`GSP-WORKSPACE.md`](../../../GSP-WORKSPACE.md)
|
||||
|
||||
## Status
|
||||
|
||||
Accepted
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
# Decision 0006: Installers Must Be Game-Capability Driven
|
||||
|
||||
Workspace reference: [`GSP-WORKSPACE.md`](../../../GSP-WORKSPACE.md)
|
||||
|
||||
## Status
|
||||
|
||||
Accepted
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
# Companion Programs Design Investigation
|
||||
|
||||
Workspace reference: [`GSP-WORKSPACE.md`](../../../GSP-WORKSPACE.md)
|
||||
|
||||
This is an investigation-only design report for adding first-class companion/sidecar application support to GSP game servers. No implementation is included here.
|
||||
|
||||
Repository layout reviewed:
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
# Decisions
|
||||
|
||||
Workspace reference: [`GSP-WORKSPACE.md`](../../../GSP-WORKSPACE.md)
|
||||
|
||||
This folder holds permanent architecture decisions and a small set of preserved investigation reports that informed those decisions.
|
||||
|
||||
## Decision Records
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
# GSP Scheduler Actions Design
|
||||
|
||||
Workspace reference: [`GSP-WORKSPACE.md`](../../../GSP-WORKSPACE.md)
|
||||
|
||||
## Scope
|
||||
|
||||
This is an investigation and design report only. It does not implement code.
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
# GSP Steam Workshop and Server Content Design
|
||||
|
||||
Workspace reference: [`GSP-WORKSPACE.md`](../../../GSP-WORKSPACE.md)
|
||||
|
||||
## Scope
|
||||
|
||||
This document is an investigation and design report only. It does not implement code.
|
||||
|
|
@ -43,8 +45,8 @@ What exists:
|
|||
- Workshop IDs are validated as numeric strings.
|
||||
- A `server_content_workshop` table is created/migrated by helper code.
|
||||
- A remote manifest is written under the game server home.
|
||||
- Bundled generic Linux and Cygwin/Windows scripts are copied to the agent and executed.
|
||||
- The current scripts can call SteamCMD with `+workshop_download_item`.
|
||||
- Panel-owned Linux and Cygwin/Windows templates are used to generate per-job scripts under the server home.
|
||||
- The generated job script creates a temporary SteamCMD runscript and calls SteamCMD with `+runscript`.
|
||||
- Basic install, update, update selected, update all, and remove selected actions exist.
|
||||
- Actions are logged through the panel logger and the script writes a text log under `gsp_server_content`.
|
||||
|
||||
|
|
@ -74,18 +76,20 @@ The current user flow is:
|
|||
3. Panel inserts or updates rows in `server_content_workshop`.
|
||||
4. Panel writes a manifest to:
|
||||
- `{GAME_HOME}/gsp_server_content/workshop_manifest.json`
|
||||
5. Panel copies a bundled script to:
|
||||
- `{GAME_HOME}/gsp_server_content/scripts/workshop/generic_steam_workshop_linux.sh`
|
||||
- or `{GAME_HOME}/gsp_server_content/scripts/workshop/generic_steam_workshop_windows_cygwin.sh`
|
||||
5. Panel writes a generated job script to:
|
||||
- `{GAME_HOME}/gsp_server_content/jobs/workshop/workshop_job_<timestamp>_<random>.sh`
|
||||
6. Panel executes:
|
||||
- `bash <script_path> <manifest_path>`
|
||||
7. The script uses SteamCMD:
|
||||
- `+force_install_dir <server_root>`
|
||||
- `+login anonymous`
|
||||
- `+workshop_download_item <workshop_app_id> <workshop_id> validate`
|
||||
8. The script copies downloaded files to a target folder, defaulting to:
|
||||
7. The script writes a temporary SteamCMD runscript:
|
||||
- `@ShutdownOnFailedCommand 0`
|
||||
- `@NoPromptForPassword 1`
|
||||
- `force_install_dir <server_root>`
|
||||
- `login anonymous`
|
||||
- `workshop_download_item <workshop_app_id> <workshop_id> validate`
|
||||
8. The script runs SteamCMD with `+runscript <scriptfile>`.
|
||||
9. The script copies downloaded files to a target folder, defaulting to:
|
||||
- `{SERVER_ROOT}/@{WORKSHOP_ID}`
|
||||
9. Panel updates DB row state to `installed`, `failed`, or `removed`.
|
||||
10. Panel updates DB row state to `installed`, `failed`, or `removed`.
|
||||
|
||||
This is useful as a proof of concept, but it is not yet a commercial Workshop/mod system.
|
||||
|
||||
|
|
@ -121,7 +125,7 @@ The current helper also writes agent-side files under the server home:
|
|||
- `gsp_server_content/workshop_install.log`
|
||||
- `gsp_server_content/workshop_install_windows.log`
|
||||
- `gsp_server_content/workshop/removed/*`
|
||||
- `gsp_server_content/scripts/workshop/*`
|
||||
- `gsp_server_content/jobs/workshop/workshop_job_*.sh`
|
||||
|
||||
Current DB weaknesses:
|
||||
|
||||
|
|
@ -1393,4 +1397,3 @@ The professional path is:
|
|||
- Generate startup parameters from structured enabled/load-ordered rows.
|
||||
- Treat LGSL/GameQ and game query systems as unrelated to content installation.
|
||||
- Keep customers away from raw commands, helper scripts, and managed control files.
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue