Перейти к содержимому

Документация · 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_KEYAPI-ключ: используется вместо вошедшего человека.
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 в папке запуска хранит повторяющиеся части загрузки. Флаги командной строки его переопределяют.

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