Steampipe
Dockerfile for automated build of a SteamCMD + Steamworks SDK Tools installation: https://hub.docker.com/r/cm2network/steampipe/
Install / Use
/learn @CM2Walki/SteampipeREADME
Supported tags and respective Dockerfile links
What is SteamPipe?
SteamPipe is the game/application content system that powers Steam. SteamPipe includes the following features: Efficient and fast content delivery. Unlimited public and private "beta" branches, allowing multiple builds to be tested (Source: developer.valvesoftware.com). If you are developing a game on Steam, this is the tool you use to upload new builds of your game to Steam.
How to use this image
As of now, the image only supports the ContentBuilder of SteamPipe. Further SteamPipe features will be added in the future, as long as they don't directly require an installation of Steamworks SDK (which would be non-compliant with the SDK's developer agreement).
Using ContentBuilder
Use-Case: Upload build to a depot and/or deploy to a branch (CI/CD).
The ContentBuilder image replicates a minimal directory structure of a Steamworks SDK installation, whilst actually only being dependent on a SteamCMD installation. This image assumes that you already have depots and branches setup on partner.steamgames.com. You will also require a seperate Steamworks account (e-mail Steam Guard enabled) that has sufficient permissions to push to your steam depots. If you haven't completed any of these steps consult the official documentation.
Initial one-time setup:
Create required named volumes:
$ docker volume create steamcmd_login_volume # Location of login session
$ docker volume create steamcmd_output_volume # Location of contentbuilder build cache (it's important to preserve this! Otherwise builds will need to start from scratch each time!)
$ docker volume create steamcmd_volume # Optional: Location of SteamCMD installation, to avoid unnecessary duplication
Activate the SteamCMD login session, you will be asked to enter your e-mail Steam Guard code once (this will permanently save your login session in steamcmd_login_volume). Replace the following fields before executing the command:
- [STEAMUSER] - steam username
- [ACCOUNTPASSWORD] - steam account password
$ docker run -it --rm \
-v "steamcmd_login_volume:/home/steam/Steam:z" \
-v "steamcmd_volume:/home/steam/steamcmd:z" \
cm2network/steampipe:contentbuilder \
bash /home/steam/steamcmd/steamcmd.sh +login [STEAMUSER] [ACCOUNTPASSWORD] +quit
Using Contentbuilder:
The simple way -> uploading to a single depot. Replace the following fields before executing the command:
- [STEAMUSER] - steam username
- [ACCOUNTPASSWORD] - steam account password
- [STEAMAPPID] - appid of application/game
- [STEAMDEPOTID] - depotid to upload to
- [UPLOADDIR] - location (on host) of application/game files to upload to the depot (for example the artifact location of your CI builds)
$ docker run -d --net=host \
-e STEAMUSER="[STEAMUSER]" \
-e STEAMPASSWORD="[ACCOUNTPASSWORD]" \
-e STEAMAPPID="[STEAMAPPID]" \
-e STEAMDEPOTID="[STEAMDEPOTID]" \
-e STEAMAPPBUILDESC="Automated CD Upload" \
-v "[UPLOADDIR]:/home/steam/steamsdk/sdk/tools/ContentBuilder/content" \
-v "steamcmd_login_volume:/home/steam/Steam:z" \
-v "steamcmd_volume:/home/steam/steamcmd:z" \
-v "steamcmd_output_volume:/home/steam/steamsdk/sdk/tools/ContentBuilder/output" \
--rm "cm2network/steampipe:contentbuilder"
The complex way -> using custom .vdf files (for example for building to multiple depots). Replace the following fields before executing the command:
- [STEAMUSER] - steam username
- [ACCOUNTPASSWORD] - steam account password
- [VDFAPPBUILDFILE] - The .vdf file steamcmd should call on container start (file must be located in [VDFFILESDIR])
- [VDFFILESDIR] - location (on host) of the vdf files that [VDFAPPBUILDFILE] depends on
- [UPLOADDIR] - location (on host) of application/game files to upload to the depot (for example the artifact location of your CI builds)
$ docker run -d --net=host \
-e STEAMUSER="[STEAMUSER]" \
-e STEAMPASSWORD="[ACCOUNTPASSWORD]" \
-e VDFAPPBUILD="[VDFAPPBUILDFILE]" \
-e STEAMAPPBUILDESC="Automated CD Upload" \
-v "[UPLOADDIR]:/home/steam/steamsdk/sdk/tools/ContentBuilder/content" \
-v "[VDFFILESDIR]:/home/steam/steamsdk/sdk/tools/ContentBuilder/scripts" \
-v "steamcmd_login_volume:/home/steam/Steam:z" \
-v "steamcmd_volume:/home/steam/steamcmd:z" \
-v "steamcmd_output_volume:/home/steam/steamsdk/sdk/tools/ContentBuilder/output" \
--rm "cm2network/steampipe:contentbuilder"
Configuration
Environment Variables:
Feel free to overwrite these environment variables, using -e (--env):
VDFAPPBUILD="app_build_default.vdf" (The vdf steamcmd should call on container start)
STEAMAPPBRANCH="" (Steam partner branch of appid to upload to. Warning: Setting this to a branch will instantly set the uploaded builds live! Useful for full CI/CD pipelines)
STEAMAPPBUILDESC="Docker CD upload" (Partner page build description)
STEAMAPPID="22222" (Only Used if there are no scripts in ${BUILDERSCRIPTDIR})
STEAMDEPOTID="22223" (Only Used if there are no scripts in ${BUILDERSCRIPTDIR})
FILEEXCLUSIONS="" (; seperated list of things to exclude from the build, Only Used if there are no scripts in ${BUILDERSCRIPTDIR})
CONTENTBUILDERDIR="${HOMEDIR}/steamsdk"
BUILDERSCRIPTDIR="${CONTENTBUILDERDIR}/sdk/tools/ContentBuilder/scripts"
BUILDERCONTENTDIR="${CONTENTBUILDERDIR}/sdk/tools/ContentBuilder/content"
BUILDEROUTPUTDIR="${CONTENTBUILDERDIR}/sdk/tools/ContentBuilder/output"
LOCALCONTENTPATH="*" (Directory to build inside ContentRoot)
Contributors
Related Skills
qqbot-channel
348.5kQQ 频道管理技能。查询频道列表、子频道、成员、发帖、公告、日程等操作。使用 qqbot_channel_api 工具代理 QQ 开放平台 HTTP 接口,自动处理 Token 鉴权。当用户需要查看频道、管理子频道、查询成员、发布帖子/公告/日程时使用。
docs-writer
100.3k`docs-writer` skill instructions As an expert technical writer and editor for the Gemini CLI project, you produce accurate, clear, and consistent documentation. When asked to write, edit, or revie
model-usage
348.5kUse CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.
Design
Campus Second-Hand Trading Platform \- General Design Document (v5.0 \- React Architecture \- Complete Final Version)1\. System Overall Design 1.1. Project Overview This project aims t
