public site and containers for that.
Build and Publish Container / Publish Linux container (push) Failing after 1m52s
Build and Publish Container / Publish Linux container (push) Failing after 1m52s
This commit is contained in:
@@ -15,4 +15,72 @@ python version_manager.py 1.0.1
|
||||
|
||||
build
|
||||
|
||||
pyinstaller --clean --onefile --windowed --icon=art/Progression.ico --add-data "art;art" --name ProgressionLoader steam_workshop_gui.py
|
||||
pyinstaller --clean --onefile --windowed --icon=art/Progression.ico --add-data "art;art" --name ProgressionLoader steam_workshop_gui.py
|
||||
|
||||
## Web dashboard and backend
|
||||
|
||||
The repository now includes a FastAPI backend and responsive dashboard in
|
||||
`progression_backend`. It resolves the three Workshop collections through
|
||||
Steam's `GetCollectionDetails` API, downloads missing or updated RimWorld mods
|
||||
with anonymous SteamCMD, reads `About/About.xml`, and generates the same RimWorld
|
||||
`.rml` format as the desktop loader.
|
||||
|
||||
The backend refreshes once per hour and records each run in SQLite, including:
|
||||
|
||||
- complete refresh time and status
|
||||
- requested, successful, and failed downloads
|
||||
- Workshop cache size on disk
|
||||
- size added during the run and average throughput
|
||||
- per-mod size, validation status, timestamps, and SteamCMD batch diagnostics
|
||||
|
||||
### Run locally
|
||||
|
||||
Install SteamCMD, copy `.env.example` to `.env`, and set `STEAMCMD_PATH` plus
|
||||
`STEAMCMD_WORKSHOP_DIR` to the matching SteamCMD Workshop directory. Then run:
|
||||
|
||||
```powershell
|
||||
python -m pip install -r requirements-web.txt
|
||||
python -m progression_backend
|
||||
```
|
||||
|
||||
Open `http://127.0.0.1:8000`. API documentation is available at
|
||||
`http://127.0.0.1:8000/api/docs`.
|
||||
|
||||
Use one application process/worker because that process owns the hourly
|
||||
scheduler. For an externally scheduled deployment, set `REFRESH_ON_STARTUP=false`
|
||||
and call `POST /api/refresh` once per hour.
|
||||
|
||||
### Run with Docker
|
||||
|
||||
Docker provisions the SteamCMD binary and persists both analytics and downloaded
|
||||
Workshop content:
|
||||
|
||||
```powershell
|
||||
docker compose up --build
|
||||
```
|
||||
|
||||
The SteamCMD Linux runtime requires an amd64 host or amd64 emulation. Set
|
||||
`PROGRESSION_ADMIN_TOKEN` before exposing the manual refresh endpoint publicly.
|
||||
|
||||
### Published container
|
||||
|
||||
Gitea Actions builds and publishes the `linux/amd64` image on every push to
|
||||
`main` and every `v*` version tag:
|
||||
|
||||
```text
|
||||
git.hudsonriggs.systems/hriggs/progressionmods:latest
|
||||
```
|
||||
|
||||
Published tags include `latest`, the branch or semantic version, and
|
||||
`sha-<commit>`. The workflow uses the Gitea action token by default. If the
|
||||
server does not grant that token package-write access, configure repository
|
||||
secrets named `REGISTRY_USERNAME` and `REGISTRY_TOKEN`.
|
||||
|
||||
### Mod-list endpoints
|
||||
|
||||
- `GET /api/modlists/vanilla?dlc=royalty&dlc=biotech`
|
||||
- `POST /api/modlists/homebrew` with a `mods_config` XML upload
|
||||
- `GET /api/status`, `/api/analytics`, and `/api/mods`
|
||||
|
||||
Generation fails closed when any current collection item is unavailable. An
|
||||
operator can explicitly request `allow_partial=true` for diagnostics.
|
||||
|
||||
Reference in New Issue
Block a user