Деплой из терминала и из CI
Одна команда публикует папку сборки. Файлы уходят поштучно по хешу, поэтому повторный деплой не гоняет фотографии заново, а в CI хватает секрета с ключом и одной строки.
TUQO_API_KEY=tqk_… npx @tuqo/cli deploy ./dist --site <site_id> --wait Команды
deploy <dir>- загрузить папку по манифесту: в stdout deploy_id, с --wait второй строкой — боевой адрес
deploy- без аргументов — все сайты из tuqo.json одной командой; по строке на сайт
preview <deploy_id>- секретная ссылка на сборку, сделанную с --no-activate (с тарифа «Старт»)
promote <deploy_id>- опубликовать сборку; та же команда — откат на прошлую версию
Флаги
--site <id>- site_id из панели, whoami или create_site; либо маппинг в tuqo.json
--wait- дождаться публикации и напечатать боевой адрес; exit 1, если сборка упала — удобно в CI
--no-activate- собрать без публикации: боевой адрес не меняется, версия ждёт preview / promote
--key <tqk_…>- ключ проекта; лучше переменная TUQO_API_KEY (алиас TUQO_KEY), чтобы ключ не попал в историю шелла
--config <file>- путь к tuqo.json (по умолчанию ./tuqo.json)
--api <url>- адрес API, по умолчанию https://api.tuqo.ru
stdout машиночитаемый: deploy_id, с --wait второй строкой — боевой адрес. Логи и прогресс — в stderr, так что вывод можно подставлять в скрипты.
Рецепты для CI
Ключ — в секретах CI, идентификатор сайта — в переменных. Сборка проекта остаётся вашей: Tuqo получает готовую папку.
GitHub Actions
name: Deploy to Tuqo
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: 20 }
- run: npm ci && npm run build
- run: npx @tuqo/cli deploy ./dist --site ${{ vars.TUQO_SITE_ID }} --wait
env:
TUQO_API_KEY: ${{ secrets.TUQO_API_KEY }} GitLab CI
deploy:
image: node:20
stage: deploy
only: [main]
script:
- npm ci && npm run build
- npx @tuqo/cli deploy ./dist --site "$TUQO_SITE_ID" --wait
# TUQO_API_KEY и TUQO_SITE_ID — в Settings → CI/CD → Variables (ключ — masked) Репозиторий на GitHub, GitLab, Gitea, GitVerse или GitFlic без своего CI? Проще Git CD: Tuqo сам соберёт и опубликует по push.
Показать версию до публикации
Сборка с --no-activate не встаёт на боевой адрес: посетители видят прежнюю версию, а заказчик — секретную ссылку. Согласовали — опубликовали одной командой. Та же команда откатывает на любую хранимую версию.
D=$(npx @tuqo/cli deploy ./dist --site <site_id> --no-activate --wait)
npx @tuqo/cli preview "$D" # секретная ссылка для заказчика
npx @tuqo/cli promote "$D" # опубликовать, когда согласовали Подробнее — Предпросмотр сборки.
Несколько сайтов из одного репозитория
Локали, бренды, лендинги кампаний: положите tuqo.json в корень и деплойте всё командой npx @tuqo/cli deploy без аргументов. Файл коммитится в репозиторий, поэтому ключа в нём быть не должно — CLI это проверяет.
{ "sites": { "site/ru": "<site_id_ru>", "site/en": "<site_id_en>" } } - Дедуп по sha256: совпадающие файлы между деплоями не загружаются повторно
- Байты читаются с диска, не через контекст нейросети — для Claude Code и Cursor
- До 2000 файлов, до 50 МБ на файл, суммарно в пределах квоты тарифа
- Те же проверки при публикации, что и в панели
CLI — частые вопросы
Чем CLI отличается от загрузки архива? +
Архив уходит целиком, даже если поменялась одна строка. CLI сначала спрашивает у сервера, каких файлов ещё нет по sha256, и загружает только их: правка текста не трогает фотографии, а повторный деплой того же сайта почти мгновенный. Лимита на размер тела запроса нет — файлы идут поштучно.
Нужно ли что-то устанавливать? +
Нет: npx @tuqo/cli скачает пакет при первом запуске. Нужен Node.js 18 или новее. Пакет без зависимостей.
Как это работает с нейросетями? +
Claude Code, Cursor и другие агенты с доступом к терминалу вызывают ту же команду. Байты читаются с диска и не проходят через контекст модели — тяжёлый сайт с фотографиями публикуется без расхода токенов на base64. В браузерном чате без файловой системы агент публикует через MCP, а CLI — там, где есть диск.
Где взять ключ? +
Панель → проект → «API-ключи» → создать ключ с правами editor (для деплоя достаточно) или full. Ключ показывается один раз; для CI положите его в секрет репозитория, не в tuqo.json — CLI откажется работать, если найдёт ключ в конфиге.
Как показать версию заказчику до публикации? +
deploy --no-activate --wait вернёт deploy_id, preview <id> выдаст секретную ссылку, promote <id> опубликует. Ссылка открывается без пароля, даже если сайт закрыт, — давайте её только тем, кому доверяете. Доступно с тарифа «Старт».
Какие лимиты? +
До 2000 файлов и до 50 МБ на файл; суммарно — в пределах квоты хранилища тарифа. В корне папки должен быть index.html. Что Tuqo проверит при публикации — на странице «Проверки при публикации».
А если репозиторий на GitVerse или GitFlic? +
Там проще без CLI: подключите Git CD в панели — Tuqo сам соберёт и опубликует сайт по push. CLI нужен, когда сборка идёт в вашем CI или на вашей машине.
Одна команда — и сайт в проде
CLI — обёртка над публичным REST API манифест-деплоя: то же самое можно собрать на любом языке.