{"id":28220267,"url":"https://github.com/bioblaze/batch2steam","last_synced_at":"2025-06-11T13:31:09.693Z","repository":{"id":288979072,"uuid":"969402653","full_name":"Bioblaze/batch2steam","owner":"Bioblaze","description":null,"archived":false,"fork":false,"pushed_at":"2025-04-20T23:44:36.000Z","size":32,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-06T06:43:35.698Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/Bioblaze.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"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}},"created_at":"2025-04-20T04:11:16.000Z","updated_at":"2025-04-20T23:44:39.000Z","dependencies_parsed_at":"2025-04-20T20:44:09.929Z","dependency_job_id":null,"html_url":"https://github.com/Bioblaze/batch2steam","commit_stats":null,"previous_names":["bioblaze/batch2steam"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bioblaze%2Fbatch2steam","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bioblaze%2Fbatch2steam/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bioblaze%2Fbatch2steam/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bioblaze%2Fbatch2steam/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Bioblaze","download_url":"https://codeload.github.com/Bioblaze/batch2steam/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bioblaze%2Fbatch2steam/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259273867,"owners_count":22832418,"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":[],"created_at":"2025-05-18T04:14:54.317Z","updated_at":"2025-06-11T13:31:09.679Z","avatar_url":"https://github.com/Bioblaze.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n![Release Version](https://img.shields.io/github/v/release/Bioblaze/batch2steam)\n\n# Batch2Steam GitHub Action\n\n## Overview\n\nThe **Batch2Steam** GitHub Action is built to batch-deploy multiple depots associated with a single Steam AppID using the SteamSDK. It enables streamlined CI/CD pipelines for game developers who need to push cross-platform or modular builds in one go.\n\nThis action connects to the Steam partner network, generates individual depot VDFs for each entry, constructs a combined app VDF, and automates the upload using SteamCMD with full TOTP (Steam Guard) support.\n\n## Inputs\n\n### Required Inputs\n\n- `username`: The username of your Steam builder account.\n- `password`: The password for your Steam builder account.\n- `shared_secret`: The shared secret for Steam's two-factor authentication. This is used to generate a time-based one-time password.\n- `appId`: The unique identifier for your application within Steam's partner network.\n- `rootPath`: The root path where all depot content is located.\n- `baseDesc`: This is a Description that will be added in the Default Description for the Build\n- `entries`: A **JSON array** of entry objects containing:\n  - `depotID`: The ID of the Steam depot.\n  - `buildDescription`: Echoed in Debug\n  - `depotPath`: The subdirectory within `rootPath` where the depot's files are stored.\n\n### Example entries input:\n\n```json\n[\n  { \"depotID\": \"123457\", \"buildDescription\": \"Windows 64-bit build\", \"depotPath\": \"windows\" },\n  { \"depotID\": \"123458\", \"buildDescription\": \"Linux 32-bit build\", \"depotPath\": \"linux32\" },\n  { \"depotID\": \"123459\", \"buildDescription\": \"macOS build\", \"depotPath\": \"macos\" }\n]\n```\n\n## Outputs\n\n- `build_id`: The unique build ID returned after a successful upload to Steam.\n\n## Environment Variables\n\nThese are internally used and set from your inputs:\n\n- `steam_username`\n- `steam_password`\n- `steam_shared_secret`\n- `appId`\n- `rootPath`\n- `entries`\n- `baseDesc`\n\n## Usage\n\nHere’s an example GitHub Actions workflow that uses **Batch2Steam** to upload multiple builds:\n\n```yaml\nname: Batch Deploy to Steam\n\non:\n  workflow_dispatch:\n\njobs:\n  deploy:\n    runs-on: ubuntu-latest\n    steps:\n    - uses: actions/checkout@v2\n\n    - name: Batch Deploy to Steam\n      uses: bioblaze/batch2steam@v1  # Path to your action or remote repo\n      with:\n        username: ${{ secrets.STEAM_USERNAME }}\n        password: ${{ secrets.STEAM_PASSWORD }}\n        shared_secret: ${{ secrets.STEAM_SHARED_SECRET }}\n        appId: '123456'\n        rootPath: './build'\n        baseDesc: '1.5.12-rc'\n        entries: \u003e\n          [\n            { \"depotID\": \"123457\", \"buildDescription\": \"Windows 64-bit build\", \"depotPath\": \"windows\" },\n            { \"depotID\": \"123458\", \"buildDescription\": \"Linux 32-bit build\", \"depotPath\": \"linux32\" },\n            { \"depotID\": \"123459\", \"buildDescription\": \"macOS build\", \"depotPath\": \"macos\" }\n          ]\n```\n\nIn this workflow:\n- All depot folders are expected to exist under `./build/`.\n- VDF files for each depot and the app are generated automatically inside the action.\n- The manifest is executed via SteamCMD in a single batch operation.\n\n## Notes\n\n- Set up GitHub Secrets for `STEAM_USERNAME`, `STEAM_PASSWORD`, and `STEAM_SHARED_SECRET` to protect your credentials.\n- Each `depotPath` must be relative to the `rootPath` and must contain the full content for that depot.\n- Make sure your depots are properly configured on the Steam partner site with matching Depot IDs.\n\n## Node.js File: `get_totp.js`\n\nThis action includes a Node.js utility (`get_totp.js`) to securely generate TOTP codes for use with Steam Guard. It reads your `shared_secret` and calculates the correct authentication code for logging in.\n\n## How to Get the Shared Token for Steam\n\nTo obtain your Steam shared secret for use with this action, follow the guide provided:\n\n📄 [How to Get the Shared Token for Steam (STEAM_TUTORIAL.md)](./STEAM_TUTORIAL.md)\n\nThe tutorial includes:\n- Installing `steamguard-cli`\n- Exporting the shared token\n- Securing your revocation code for future recovery\n\nIf you need help, feel free to open an issue or contact the maintainer directly.\n\n## License\n\nThis GitHub Action is distributed under the MIT license. See the `LICENSE` file for more details.\n\n---\n\nMaintained by **Randolph William Aarseth II** \u003c\u003crandolph@divine.games\u003e\u003e. Pull requests and issues welcome.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbioblaze%2Fbatch2steam","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbioblaze%2Fbatch2steam","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbioblaze%2Fbatch2steam/lists"}