Решили: выкладка в Steam уходит на локальную машину (scripts/steam-publish.ps1), а облачный CI
остаётся гейтом и отвечает на другой вопрос — «собирается ли то, что лежит в репозитории».
Сказано: «А если сделать его приватным все-таки? Ты пугал меня Ci/CJ вроде, но разве нельзя организовать пайплайн на своей машине? […] Ибо и так приватный хотел по итогам» (03.08.2026, сессия d084ed77). Возражение справедливое: мой запрет на свой раннер стоял на публичности репозитория — любой мог открыть PR и выполнить код на чужой машине. В приватном этого нет.
Почему в итоге не свой раннер, а просто скрипт. Раннер сохранял бы кнопку в GitHub и историю
прогонов, но требовал службы, доверия к окружению и зависел от политики цен: GitHub объявил плату за
self-hosted в приватных репозиториях и отложил её под давлением — «пока бесплатно» это не гарантия.
Скрипт же переиспользует то, что уже написано: теневой проект из unity-cli.ps1 (Unity в batchmode
поверх junction на живые Assets, не мешая открытому редактору), локальную лицензию Unity и уже
залогиненный steamcmd. Три минуты против семи, ноль минут Actions, секреты Steam не покидают машину.
Что осталось за облаком и почему это не дубль. Локальная сборка берёт файлы С ДИСКА, где лежит и
незакоммиченное. Ровно так 02.08.2026 в ветке несколько дней жили два файла, без которых чистый клон
не собирался, — и поймал это первый же облачный прогон. Скрипт страхуется отказом собирать при
незакоммиченных .cs, но чистым клоном не является и заменить его не может.
Владелец версии не изменился — тег. Скрипт берёт версию из тега на HEAD, а вне тега лепит
<bundleVersion>-dev.<sha>. Правка PlayerSettings.bundleVersion безопасна, потому что теневой
проект копирует ProjectSettings, а не линкует: репозиторий она не трогает.
Грабли, заложенные в проверку: steam_appid.txt рядом с exe снимает проверку владения — игра
пойдёт у любого. Оба пути выкладки ищут его в билде и отказываются отправлять.
Владелец правды: scripts/steam-publish.ps1, Assets/_Project/Scripts/EditorTools/Build/PlayerBuilder.cs,
steam/*.template.vdf, docs/steam-deploy-setup.md §6.