Документация · 02
Справочник CLI
Все команды, флаги, переменные окружения и коды выхода gw. Для первой загрузки начните с краткого руководства.
6 минут чтенияОбновлено 7 окт. 2026
Разделы документации
Обзор
gw выполняет вход, проверяет папку со сборкой, загружает её и переключает ветки. Ваши файлы он не меняет. По умолчанию вывод для человека; с --json выводится по одному JSON-событию в строке — это то, что должны читать скрипты и CI.
usage: gw <command> [options]
gw login | gw logout | gw whoami
gw init [--app <app>] [--depot <depot>=<path> …] [--notes <file>] [--force]
gw doctor
gw app list | gw app info <app>
gw depot list <app> | gw depot create <app> --os macos|windows|linux --arch arm64|x64|universal [--kind client|server]
gw inspect <path> [--os <os>] [--arch <arch>] [--exclude <glob>] [--exe <relpath>]
gw build push <app> --depot <depot>=<path> … --label <v> [options]
gw build list <app> | gw build info <buildId>
gw branch list <app> | gw branch set <app> <branch> <buildId> | gw branch rollback <app> <branch>
gw verify <path> --build <buildId> --depot <depot>
gw server list|create|update|rotate-key|delete …<app> — номер приложения (число от 1000) или его короткое имя. <depot> — имя депо, которое вы создали в портале.
Скачать
Скачайте архив для вашей системы, сверьте его SHA-256, распакуйте и положите файл gw (gw.exe в Windows) в папку, которая есть в PATH. По шагам — в кратком руководстве.
Скачать CLI
Загружаем список сборок…
Общие параметры
| Параметр | Что делает |
|---|---|
--json | По одному JSON-событию в строке вместо текста для человека. |
--dry-run | Показать, что произойдёт, ничего не меняя. |
-q, -v | Тише или подробнее. |
--no-color | Без цветов. То же делает переменная NO_COLOR. |
--strict | Любое предупреждение считается ошибкой: если проверка предупреждает, ничего не загружается. |
--yes | Не спрашивать подтверждение (в интерактивном терминале перед публикацией спрашивает). |
--api <url>, --web <url> | Где находятся API и сайт (для login; потом запоминается). |
Вход
gw login
Открывает браузер на странице подтверждения Gameway с именем вашего аккаунта и этого компьютера и ждёт, пока вы нажмёте Продолжить. Ответ возвращается на порт 127.0.0.1, доступный только этому компьютеру, поэтому браузер должен работать на нём же. Если ничего не открылось, скопируйте ссылку из вывода. Ожидание заканчивается через пять минут (изменить: GW_LOGIN_TIMEOUT_S).
Вход хранится в зашифрованном виде для этого компьютера, а ключ от него лежит в отдельной папке, которую резервные копии пропускают. Разработчикам нужна двухфакторная аутентификация на аккаунте, и сеанс должен был её пройти.
gw logout, gw whoami
logout завершает сеанс этого компьютера. whoami печатает, кто вы и в каких командах состоите, или префикс ключа, если задан GW_API_KEY.
Работа без человека
Сборочная машина может использовать API-ключ вместо человека: задайте GW_API_KEY, и все команды будут использовать его. У ключа есть права (загрузка, выпуск, серверы), и он ограничен перечисленными приложениями. Создание ключей — действие администратора команды со вторым фактором: в портале разработчика откройте приложение, затем Серверы, Ключи API. Секрет показывается один раз.
Подготовка
gw doctor
Проверяет адрес API, часы (доказательствам входа нужна точность до пяти минут), ваш вход и файл gw.toml в текущей папке и говорит, что не в порядке.
gw init
Спрашивает, какое приложение вы имеете в виду и какая папка в какое депо идёт, и записывает ответы в gw.toml, чтобы команда загрузки стала короче.
gw app list, gw app info
Перечисляет приложения ваших команд или показывает одно: номер, вид, статус и ветки.
gw depot list, gw depot create
Депо хранит файлы одной платформы. depot create принимает операционную систему, архитектуру и вид (client — его скачивают игроки, server — его они не видят). То же делает портал в разделе Депо.
gw depot create <app> --os windows --arch x64 --kind clientПроверка сборки
gw inspect <path>
Читает папку со сборкой и печатает то, что увидит загрузка, без сети:
- файлы, размер и исполняемые файлы,
- сжаты ли данные Unity (если да — предупреждение: см. руководство по материалам для магазина),
- программу запуска или no launch executable found, если определить не удалось,
- в macOS — цела ли подпись приложения,
- пробное разбиение на части, чтобы было видно, какая доля папки уникальна.
| Параметр | Что делает |
|---|---|
--os, --arch | Указать платформу, если по папке она не видна. |
--exclude <glob> | Исключить файлы (параметр можно повторять). Удобно для журналов и дампов. |
--exe <relpath> | Программа запуска как путь внутри папки. |
Загрузка сборки
gw build push
gw build push <app> --depot <depot>=<path> [--depot <depot>=<path> …] --label 0.1.0 [options]Режет папки на части, спрашивает сервер, каких частей ему не хватает, загружает только их и ждёт, пока сервер проверит и подпишет сборку. Пока вы её не выпустите, сборка закрыта.
| Параметр | Что делает |
|---|---|
--depot <имя>=<путь> | Депо и папка (или macOS .app), которая его наполняет. Повторите для каждой платформы. |
--label <версия> | Версия, которую видят игроки, до 64 символов. Обязателен. |
--desc <текст> или --notes <файл> | Заметки к патчу: строка текста или файл Markdown, из которого берётся раздел с названием метки. Не вместе. |
--set-live <ветка> | Выпустить сборку на ветку, когда она готова. Интерактивный терминал покажет размер загрузки и спросит. |
--expect-current <id> | Вместе с --set-live: только если ветка всё ещё отдаёт эту сборку (или none). При расхождении код 3 и ничего не меняется. |
--exe <relpath> | Программа запуска внутри папки, если инструмент не нашёл её сам. |
--exclude <glob> | Исключить файлы. |
--allow-unsigned | Загрузить macOS-приложение без подписи кода (тестовая сборка). |
--allow-drop-depot | Выпустить сборку, в которой нет депо, которое ветка отдаёт сейчас. |
--parallel N, --threads N | Сколько параллельных загрузок и потоков хеширования использовать. |
--resume <сеанс> | Продолжить прерванную загрузку. |
--release-key <файл> | Ключ выпуска команды для приложений, которым нужна сопутствующая подпись. |
Прервались? Инструмент напечатает строку для продолжения (--resume <сеанс>). Повторный запуск исходной команды тоже работает: загрузится только то, чего серверу ещё не хватает.
gw build list, gw build info
build list <app> показывает последние сборки со статусом. build info <buildId> показывает одну: депо, размеры, сколько было нового и предупреждения.
Ветки
Ветка — это именованная ссылка на сборку: игроки на ветке получают то, на что она указывает. У нового приложения есть закрытая ветка stable. Остальные создаются в портале (Ветки), в том числе защищённые кодом доступа для тестеров.
gw branch list <app>
gw branch set <app> <branch> <buildId> [--expect-current <id>]
gw branch rollback <app> <branch>Сделать сборку актуальной и откатить может роль Администратор или API-ключ с правом выпуска. Выпуск на публичную ветку в портале дополнительно спрашивает второй фактор. rollback возвращает ветку к предыдущей сборке и сохраняет историю.
Сверка папки
gw verify <path> --build <buildId> --depot <depot> [--manifest <file>]Сравнивает локальную папку с манифестом сборки и перечисляет отличающиеся и отсутствующие файлы. Код выхода 5 означает расхождение.
Выделенные серверы
Регистрирует выделенный игровой сервер, чтобы он мог проверять онлайн-пропуска, и один раз печатает его секретный ключ. См. Онлайн-пропуска на выделенных серверах.
gw server create <app> --name eu-1 --endpoint 203.0.113.5:27777
gw server list <app>
gw server update <app> <serverId> [--name <name>] [--endpoint <ip:port> …] [--disable | --enable]
gw server rotate-key <app> <serverId> --yes
gw server delete <app> <serverId> --yesПеременные окружения
| Переменная | Значение |
|---|---|
GW_API_URL | Адрес API. login --api запоминает его; переменная переопределяет запомненный. |
GW_WEB_URL | Адрес сайта для входа через браузер. |
GW_API_KEY | API-ключ: используется вместо вошедшего человека. |
GW_RELEASE_KEY_FILE, GW_RELEASE_KEY_PASSPHRASE | Ключ выпуска команды и его пароль для сопутствующей подписи. |
GW_CLI_HOME | Где инструмент хранит своё состояние (по умолчанию скрытая папка в домашнем каталоге). |
GW_LOGIN_TIMEOUT_S | Сколько секунд login ждёт браузер (по умолчанию 300). |
GW_COMMIT_WAIT_S | Сколько build push ждёт, пока сервер завершит сборку. |
Файл проекта
Необязательный gw.toml в папке запуска хранит повторяющиеся части загрузки. Флаги командной строки его переопределяют.
app = "1000"
[depots.windows-x64]
path = "Builds/Windows"
[depots.macos-universal]
path = "Builds/Mac/MyGame.app"
[push]
notes = "CHANGELOG.md" # раздел, заголовок которого совпадает с --label, станет заметками к патчуС таким файлом выпуск — это gw build push --label 0.2.0 --set-live beta.
Коды выхода
| Код | Значение |
|---|---|
| 0 | Успех. |
| 1 | Сбой, включая сетевые ошибки и предупреждения при --strict. |
| 2 | Ошибка в команде: неизвестный параметр или пропущенное значение. |
| 3 | Конфликт: ветка изменилась, пока вы её меняли. Ничего не изменено. |
| 4 | Проблема со входом или правами: нет входа, не хватает роли или права. |
| 5 | Проверка не прошла. |
Gameway · 2026-10-07