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

Env и CI

Переменная Что задаёт
VKMA_ACCESS_TOKEN (или MINI_APPS_ACCESS_TOKEN) Токен доступа
VKMA_APP_ID (или MINI_APPS_APP_ID) ID приложения
VKMA_ENVIRONMENT (или MINI_APPS_ENVIRONMENT) Целевое окружение
VKMA_TEST_GROUP Имя тестовой группы
VKMA_TIMEOUT Дедлайн очереди, секунд
CI_URLS Печатать сырые ключи URL (легаси-режим)
NO_COLOR Отключить цвета

MINI_APPS_*-алиасы поддерживаются навсегда, без депрекации. Окружение нормализуется без учёта регистра: dev/development → dev, prod/production → production, both/all → both. Приоритет: флаги CLI > env > конфиг > дефолты.

Токен разрешается в порядке: env-переменная > поле accessToken в конфиге > сохранённые креды vkma-deploy login ($XDG_CONFIG_HOME/vkma/deploy/credentials.json, права 0600) > fallback — токен, сохранённый официальным @vkontakte/vk-miniapps-deploy. Токен маскируется в любом выводе — в логах, ошибках и --verbose, включая query-строки. Для CI держи его в секрете раннера и передавай через env, не через конфиг.

CLI по умолчанию неинтерактивен и CI-safe: промпты отключены при переменной CI, не-TTY stdin и режимах --json/--quiet. Токен держи в секрете раннера:

- run: pnpm build
- run: npx vkma-deploy --update-prod --no-update-dev
env:
VKMA_ACCESS_TOKEN: ${{ secrets.VK_TOKEN }}

Что учесть в CI:

  • URL-политика обязательна. Неинтерактивный прогон без явных --update-prod/--no-update-prod и --update-dev/--no-update-dev (или полей updateProd/updateDev в конфиге) падает с E_UPDATE_FLAG_REQUIRED, exit 1. Закрепи политику один раз — флагами или в конфиге.
  • --json — события деплоя строка-за-строкой (NDJSON) на stdout для парсинга; логгер пишет в stderr.
  • vkma-deploy config — дешёвый fail-fast степ: печатает резолвнутый конфиг и падает на ошибке валидации до сборки архива.
  • --verbose — отладка упавших прогонов: HTTP-запросы дампятся в лог с замаскированными секретами.
  • --dry-run — проверить конфиг и собрать архив без единого сетевого запроса; удобен как smoke-степ после сборки.
  • Код подтверждения VK (событие очереди 205) в CI взять неоткуда — прогон упадёт, а не повиснет на промпте. Подавай код программно через library API: deploy({ confirmCode: async () => "123456" }).
  • logout в CI не нужен: креды живут только там, где ты делал login.

Весь трафик CLI (VK API, загрузка архива, OAuth) можно пустить через HTTP(S)-прокси. Три источника, побеждает первый найденный:

  1. флаг --proxy http://proxy.corp:8080;
  2. переменные HTTP_PROXY / HTTPS_PROXY (lowercase-варианты тоже работают и выигрывают, если заданы оба — как в Node);
  3. поле proxy в конфиге.

NO_PROXY из окружения уважается всегда. Поддерживаются http:// и https:// (креды в URL маскируются в выводе); socks — нет. Нужен Node >= 22.21 / 24 (нативная поддержка env-proxy): на старших рантаймах CLI предупредит и пойдёт напрямую. Прокси активирует только CLI — библиотечные потребители маршрутизируют трафик сами через fetchImpl.