Reusable SteamPipe upload helper intended to live as a git submodule.
This module is intentionally game-agnostic: game IDs, depot mappings, and build paths belong in your game repo config, not here.
steamline.sh: generic Steam upload runnersteampipe-upload-builds.sh: compatibility wrapper that forwards tosteamline.shvdf/: VDF templates used for one-time bootstrap of game-owned VDF filesexamples/: starter templates for game-owned env config
steamline.sh defaults to:
STEAM_SDK_ROOT=~/steam-sdk
It also supports these fallback layouts:
$STEAM_SDK_ROOT/tools/ContentBuilder$STEAM_SDK_ROOT/sdk/tools/ContentBuilder<module>/sdk/tools/ContentBuilder(legacy fallback)
In your game repo, commit a config such as:
steamline.config.env
Then create your local private config (ignored by git):
steamline.config.local.env
An env template is provided in the submodule:
steamline/examples/steamline.config.env.example
Game-owned VDF files are generated in this submodule folder:
steamline/app_build.vdfsteamline/depot_build_linux.vdfsteamline/depot_build_windows.vdfsteamline/depot_build_macos.vdf
These generated VDF files are gitignored by steamline/.gitignore.
steamline.sh bootstraps those files from vdf/*.tpl only if they are missing.
Behavior:
- If a VDF file is missing,
steamline.shcreates it from defaults. - If a VDF file already exists,
steamline.shuses it as-is and does not overwrite it. - Steam build output is written to a temp directory outside the repo (
$TMPDIRor/tmp).
You can copy env config from examples/.
From the module directory:
./steamline.sh --check
./steamline.shFrom repo root:
./steamline/steamline.sh --checkOverride config path if needed:
./steamline/steamline.sh --config ./steamline.config.local.env --check
./steamline/steamline.sh --config ./steamline.config.env --checkLegacy root-level config path (./steamline.config.env) is still recognized for backward compatibility.
Use steamline.config.env as your game-specific env file.
Start from steamline/examples/steamline.config.env.example:
STEAM_USERNAMESTEAM_PASSWORD
Steam Guard code is not required in config; SteamCMD handles guard prompts on login.