{"id":28400064,"url":"https://github.com/game-ci/steam-deploy","last_synced_at":"2025-06-28T02:31:12.712Z","repository":{"id":38343234,"uuid":"260727621","full_name":"game-ci/steam-deploy","owner":"game-ci","description":"Github Action to deploy a game to Steam","archived":false,"fork":false,"pushed_at":"2025-03-16T00:18:50.000Z","size":90,"stargazers_count":267,"open_issues_count":12,"forks_count":73,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-06-24T17:38:20.864Z","etag":null,"topics":["deployment","game","sdk","ship","steam","steamworks"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/game-ci.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"game-ci","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2020-05-02T16:25:03.000Z","updated_at":"2025-06-23T10:20:33.000Z","dependencies_parsed_at":"2023-11-10T15:01:33.973Z","dependency_job_id":"4c46e602-c0a7-46ce-a0a2-3fd1d5c26da7","html_url":"https://github.com/game-ci/steam-deploy","commit_stats":{"total_commits":104,"total_committers":17,"mean_commits":6.117647058823529,"dds":"0.45192307692307687","last_synced_commit":"0a1f7f01cef36bd706b2a609b98ae40d0d4c54e7"},"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/game-ci/steam-deploy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/game-ci%2Fsteam-deploy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/game-ci%2Fsteam-deploy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/game-ci%2Fsteam-deploy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/game-ci%2Fsteam-deploy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/game-ci","download_url":"https://codeload.github.com/game-ci/steam-deploy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/game-ci%2Fsteam-deploy/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261766925,"owners_count":23206711,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["deployment","game","sdk","ship","steam","steamworks"],"created_at":"2025-06-01T08:38:21.341Z","updated_at":"2025-06-28T02:31:12.706Z","avatar_url":"https://github.com/game-ci.png","language":"Shell","funding_links":["https://github.com/sponsors/game-ci"],"categories":[],"sub_categories":[],"readme":"# Steam Deploy\n\n[![Actions status](https://github.com/game-ci/steam-deploy/actions/workflows/main.yml/badge.svg?branch=main)](https://github.com/game-ci/steam-deploy/actions/workflows/main.yml)\n\nGithub Action to deploy a game to Steam\n\n## Setup\n\n#### Prerequisites\n\nThis action assumes you are registered as a [partner](https://partner.steamgames.com/) with Steam.\n\n#### 1. Create a Steam Build Account\n\nCreate a specialised builder account that only has access to `Edit App Metadata` and `Publish App Changes To Steam`,\nand permissions to edit your specific app.\n\nhttps://partner.steamgames.com/doc/sdk/uploading#Build_Account\n\n#### 2. Export your build\n\nIn order to upload a build, this action is assuming that you have created that build in a previous `step` or `job`.\n\nFor an example of how to do this in Unity, see [Unity Actions](https://github.com/game-ci/unity-actions).\n\nThe exported artifact will be used in the next step.\n\n#### 3. Configure for deployment\n\nIn order to configure this action, configure a step that looks like the following:\n\n_(The parameters are explained below)_\n\nOption A. Using MFA files\n\n```yaml\njobs:\n  deployToSteam:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: game-ci/steam-deploy@v3\n        with:\n          username: ${{ secrets.STEAM_USERNAME }}          \n          configVdf: ${{ secrets.STEAM_CONFIG_VDF}}          \n          appId: 1234560\n          buildDescription: v1.2.3\n          rootPath: build\n          depot1Path: StandaloneWindows64\n          depot1InstallScriptPath: StandaloneWindows64/install_script.vdf\n          depot2Path: StandaloneLinux64\n          releaseBranch: prerelease\n```\n\nOption B. Using TOTP\n\n```yaml\njobs:\n  deployToSteam:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: CyberAndrii/steam-totp@v1\n        name: Generate TOTP\n        id: steam-totp\n        with:\n          shared_secret: ${{ secrets.STEAM_SHARED_SECRET }}\n      - uses: game-ci/steam-deploy@v3\n        with:\n          username: ${{ secrets.STEAM_USERNAME }}          \n          totp: ${{ steps.steam-totp.outputs.code }}\n          appId: 1234560\n          buildDescription: v1.2.3\n          rootPath: build\n          depot1Path: StandaloneWindows64\n          depot2Path: StandaloneLinux64\n          releaseBranch: prerelease\n```\n\n## Configuration\n\n#### username\n\nThe username of the Steam Build Account that you created in setup step 1.\n\n#### totp\n\nDeploying to Steam using TOTP. If this is not passed, `configVdf` is required.\n\n#### configVdf\n\nSteam Deploy supports two authentication methods:\n\n1. **Time-based One-Time Password (TOTP)** - Recommended if you have access to the shared secret.\n2. **Steam Guard MFA with `config.vdf`** - An alternative method requiring a one-time setup.\n\nIf you are using the `config.vdf` method, follow these steps to set up the required GitHub Secret:\n\n1. **Install steamcmd**  \n   Install [Valve's official steamcmd](https://partner.steamgames.com/doc/sdk/uploading#1) on your local machine. All subsequent steps will also be performed on your local machine.\n\n2. **Log in to Steam using steamcmd**  \n   Run the following command to log in:\n   ```bash\n   steamcmd +login \u003cusername\u003e \u003cpassword\u003e +quit\n   ```\n   If prompted, check your email for the MFA code and provide it when requested.\n\n3. **Validate MFA completion**  \n   To ensure MFA is complete, run:\n   ```bash\n   steamcmd +login \u003cusername\u003e +quit\n   ```\n   If no MFA prompt appears, proceed to the next step.\n\n4. **Locate and encode the `config.vdf` file**  \n   The location of the `config.vdf` file depends on your operating system:\n   - **Windows/Linux**: The file is in the `config/config.vdf` relative to where you ran `steamcmd`.\n   - **macOS**: The file is located at `~/Library/Application Support/Steam/config/config.vdf`.\n\n    Encode the file and store it as a GitHub Secret:\n    ```bash\n    # Windows/Linux\n    cat config/config.vdf | base64 \u003e config_base64.txt\n    \n    # macOS\n    cat ~/Library/Application\\ Support/Steam/config/config.vdf | base64 \u003e config_base64.txt\n    ```\n    ⚠️ **IMPORTANT**: The encoded `config.vdf` contains sensitive authentication data. Ensure you:\n   - Store it securely as a GitHub Secret named `STEAM_CONFIG_VDF`.\n   - Never commit the raw or encoded `config.vdf` to your repository.\n   - Rotate it periodically or if it is compromised.\n\n5. **Handling new MFA code requests**  \n   If the GitHub Action requests a new MFA code, run:\n   ```bash\n   steamcmd +set_steam_guard_code \u003ccode\u003e\n   ```\n   Generate a new encoded `config.vdf` file (see step 4) and update the `STEAM_CONFIG_VDF` GitHub Secret with its contents.\n\n6. **Resolving 'License expired' error**  \n   If the action fails with the error `Logging in user ... to Steam Public...FAILED (License expired)`, follow these steps:\n  - On your local machine, run:\n    ```bash\n    steamcmd +login \u003cusername\u003e\n    ```\n  - Enter the new Steam Guard code sent to your email.\n  - Generate a new encoded `config.vdf` file (see step 4).\n  - Update your `STEAM_CONFIG_VDF` GitHub Secret with the new encoded value.\n\n#### appId\n\nThe identifier of your app on steam. You can find it on your [dashboard](https://partner.steamgames.com/dashboard).\n\n#### buildDescription\n\nThe identifier for this specific build, which helps you identify it in steam. \n\nIt is recommended to use the semantic version of the build for this.\n\n#### rootPath\n\nThe root path to your builds. This is the base of which depots will search your files.\n\n#### depot[X]Path\n\nWhere X is any number between 1 and 9 (inclusive both).\n\nThe relative path following your root path for the files to be included in this depot.\n\nIf your appId is 125000 then the depots 125001 ... 125009 will be assumed.\n\n#### firstDepotIdOverride\n\nYou can use this to override the ID of the first depot in case the IDs do not start as described in depot[X]Path (e.g. for DLCs).\n\nIf your firstDepotId is 125000 then, regardless of the used appId, the depots 125000 ... 125008 will be assumed.\n\n_(feel free to contribute if you have a more complex use case!)_\n\n#### releaseBranch\n\nThe branch within steam that this build will be automatically put live on.\n\nNote that the `default` branch [has been observed to not work](https://github.com/game-ci/steam-deploy/issues/19) as a release branch, presumably because it is potentially dangerous.\n\n#### debugBranch\n\nIf set to true, do not exclude debug files from the upload.\n\n## Other Notes\n\n#### Excluded Files / Folders\n\nCertain file or folder patterns are excluded from the upload to Steam as they're unsafe to ship to players, unless debugBranch is set to true:\n\n- `*.pdb` - symbols files\n- Folders that Unity includes in builds with debugging or other information that isn't intended to be sent to players:\n    - `*_BurstDebugInformation_DoNotShip`\n    - `*_BackUpThisFolder_ButDontShipItWithYourGame`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgame-ci%2Fsteam-deploy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgame-ci%2Fsteam-deploy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgame-ci%2Fsteam-deploy/lists"}