260 words
1 minute
Unreal Engine Steam Deployment with Docker and TeamCity

I finally figured out how to use the Steam content builder inside of a docker container! This is all thanks to cm2network.

  1. Follow the Setup instructions on the image docs
  2. Setup the following environment variables in your template

These have to be environment variables and NOT configuration variables

      <param name="env.STEAMAPPBRANCH" value="beta" />
      <param name="env.STEAMAPPBUILDESC" value="CI Build - %build.number%" />
      <param name="env.STEAMAPPID" value="" />
      <param name="env.STEAMDEPOTID" value="" />
      <param name="env.STEAMPASSWORD" value="" />
      <param name="env.STEAMUSER" value="" />

You should have all of these variables already, I’m not going to go over setting up a Steam depot for deploying content to.

  1. This variable is a configuration variable
steamcmd_cache_volume // where you content gets cached at.  This cache is option but it speeds up builds quite a bit
  1. Once you have all the variables set up just run the container cm2network/steampipewith the script /home/steam/entry.sh

The full build config in code#

<?xml version="1.0" encoding="UTF-8"?>
<template xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" uuid="7f6216ac-59a1-45b3-a397-412c731968d0" xsi:noNamespaceSchemaLocation="https://www.jetbrains.com/teamcity/schemas/2021.1/project-config.xsd">
  <name>Steam Content Builder</name>
  <settings>
    <options>
      <option name="buildNumberPattern" value="%version_name%.%build.counter%" />
    </options>
    <parameters>
      <param name="env.STEAMAPPBRANCH" value="beta" />
      <param name="env.STEAMAPPBUILDESC" value="CI Build - %build.number%" />
      <param name="env.STEAMAPPID" value="" />
      <param name="env.STEAMDEPOTID" value="" />
      <param name="env.STEAMPASSWORD" value="" />
      <param name="env.STEAMUSER" value="" />
    </parameters>
    <build-runners>
      <runner id="RUNNER_6" name="Deploy To Steam" type="simpleRunner">
        <parameters>
          <param name="plugin.docker.imageId" value="cm2network/steampipe:contentbuilder" />
          <param name="plugin.docker.imagePlatform" value="linux" />
          <param name="plugin.docker.pull.enabled" value="true" />
          <param name="plugin.docker.run.parameters" value="-v %system.teamcity.build.tempDir%:/home/steam/steamsdk/sdk/tools/ContentBuilder/content -v steamcmd_login_volume:/home/steam/Steam:z -v %steamcmd_cache_volume%:/home/steam/steamsdk/sdk/tools/ContentBuilder/output" />
          <param name="script.content" value="/home/steam/entry.sh" />
          <param name="teamcity.step.mode" value="default" />
          <param name="use.custom.script" value="true" />
        </parameters>
      </runner>
    </build-runners>
    <vcs-settings />
    <requirements />
    <build-triggers />
    <build-extensions>
      <extension id="perfmon" type="perfmon">
        <parameters />
      </extension>
      <extension id="DockerSupport" type="DockerSupport">
        <parameters>
          <param name="login2registry" value="PROJECT_EXT_3" />
          <param name="loginCheckbox" value="on" />
        </parameters>
      </extension>
    </build-extensions>
    <cleanup />
  </settings>
</template>
Unreal Engine Steam Deployment with Docker and TeamCity
https://edwardbeazer.com/posts/unreal-engine-steam-deployment-with-docker-and-teamcity/
Author
Edward Beazer
Published at
2023-08-02