Steam - BredaUniversityGames/JenkinsLib GitHub Wiki

steam.deploy()

Deploys your build to Steam via SteamCMD. Handles VDF manifest generation, SteamGuard authentication, and upload.

Usage

stages {
    perforce.sync()
    ue5.build()
    steam.deploy()
    discord.alert()
}

Prerequisites

  • SteamCMD installed on the build agent
  • A Steam developer account with app/depot access
  • Steam credential in Jenkins (username/password)

Parameters

Parameter Default Description
STEAM_CREDENTIAL (empty) Jenkins credential ID (username/password)
STEAM_CMD_PATH (empty) Path to steamcmd.exe
STEAM_APP_ID (empty) Steam App ID
STEAM_DEPOT_ID (empty) Steam Depot ID
STEAM_BRANCH (empty) Steam branch to set live (leave empty for none)

Credential Setup

  1. Navigate to your team's folder in Jenkins
  2. Credentials > Add Credentials
  3. Kind: Username with password
  4. Username: your Steam username
  5. Password: your Steam password
  6. ID: e.g., steam-myproject

How It Works

  1. Generates a depot VDF manifest from the template in resources/
  2. Generates an app VDF manifest with build metadata
  3. Attempts deploy without SteamGuard
  4. If SteamGuard is required, prompts for the code in Jenkins (3-minute timeout)
  5. Uploads the build to the specified depot and optionally sets a branch live

SteamGuard

If your Steam account has SteamGuard enabled (it should), the first deploy will fail and Jenkins will prompt you to enter a SteamGuard code. Check your email or authenticator app, enter the code in the Jenkins input prompt within 3 minutes.

Tip: After the first successful SteamGuard authentication, SteamCMD caches the token on the agent. Subsequent deploys from the same agent won't need the code again (until the token expires).

Troubleshooting

Issue Solution
SteamGuard timeout Enter the code within 3 minutes. Check email/authenticator.
"Login failure" Verify credential username/password. Steam may have locked the account after failed attempts.
Wrong depot/app ID Double-check IDs in Steamworks partner site.
⚠️ **GitHub.com Fallback** ⚠️