be16401f90
- DEFAULT_ENDPOINT is https://telemetry.playhorizon.dev. The heartbeat, the launcher's live count and the outbox upload all go there; HORIZON_TELEMETRY_URL still names another server, and HORIZON_TELEMETRY_URL=off sends nothing at all. CI workflows and the harnesses that start the game or the launcher set off. Consent is unchanged: the four switches stay opt-in, only the anonymous ping is always on. - GET /v1/benchmarks/summary: players' benchmark uploads grouped by GPU, CPU, render distance and game, groups of 3+ installs only, medians per install then across installs, no install ID, day, OS version, driver, memory or screen. Cached 10 minutes, CORS for the website. Same rules as website/scripts/benchmarks.mjs, tested on the same fixtures; a deleted install leaves its groups at once. - /v1/aggregate no longer lists the newest 50 raw benchmark reports (hardware, driver, day, one install each): uploads are published only through the summary. - Behind Railway's proxy the rate limit counts X-Real-IP, else the last X-Forwarded-For entry (the one the proxy adds; a client could choose the first). Still in memory only, never stored or logged. - crates/horizon-telemetry-server/railway.json: Dockerfile build from the repository root, health check /healthz, one replica in europe-west4 (one SQLite file on the /data volume). - Docs: docs/telemetry.md, the server README (the summary's shape, Railway setup), the privacy page (the ping is on, where the data lives, how benchmark uploads are shown). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
55 lines
2.1 KiB
YAML
55 lines
2.1 KiB
YAML
name: parity
|
|
# The vanilla harnesses a pull request's changes can affect, on the Mac mini's runner, which holds the maintainer's
|
|
# own Minecraft files (Horizon never downloads the game). Called by ci.yml for pull requests from this repository
|
|
# and by run-parity.yml when a maintainer labels a fork's pull request run-parity. See docs/release-flow.md.
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
base:
|
|
description: The pull request's base commit (the harnesses its changes since then can affect)
|
|
type: string
|
|
required: true
|
|
head:
|
|
description: The commit to check out and test
|
|
type: string
|
|
required: true
|
|
permissions:
|
|
contents: read
|
|
env:
|
|
# Test runs never reach the telemetry server: no live-count ping, no uploads (docs/telemetry.md).
|
|
HORIZON_TELEMETRY_URL: "off"
|
|
|
|
jobs:
|
|
parity:
|
|
runs-on: [self-hosted, horizon-game]
|
|
timeout-minutes: 120 # a change to core crates reruns ~300 harnesses: ~60-90 min on the Mac mini
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
# The commit the event names: a fork's later pushes need another run-parity label.
|
|
ref: ${{ inputs.head }}
|
|
fetch-depth: 0
|
|
persist-credentials: false
|
|
# Keeps .local/ (parity state, probe builds, oracle results) and target/ between runs.
|
|
clean: false
|
|
- uses: dtolnay/rust-toolchain@stable
|
|
- name: Tools from the runner
|
|
run: bash tools/ci/runner-env.sh
|
|
- name: Vanilla data, and resources prepared by this preparer
|
|
run: bash tools/ci/vanilla-data.sh
|
|
- name: The version constants are the pinned jar's
|
|
run: python3 tools/gen_version_consts.py --check
|
|
- name: The harnesses this change can affect
|
|
env:
|
|
PARITY_HOSTS: ''
|
|
BASE_SHA: ${{ inputs.base }}
|
|
run: python3 tools/parity.py --changed "$BASE_SHA" --timeout 2400 # world_spawn takes ~1480 s on a busy runner
|
|
- name: Logs of the failed harnesses
|
|
if: failure()
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: parity-logs
|
|
path: .local/parity-runner/logs/
|
|
if-no-files-found: ignore
|
|
retention-days: 3
|