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

Деплой приложения в CI через TatNet CLI

TatNet CLI может запускать сборку существующего Git-приложения из CI и ждать, пока именно нужный коммит перейдёт в live. Пример ниже — для GitHub Actions. English version.

Подготовка​

  1. Создайте в TatNet приложение, подключённое к тому же GitHub-репозиторию и ветке main. При необходимости отключите автоматический деплой по push, чтобы CI был единственным триггером.
  2. Создайте API-ключ с доступом к приложению и запуску сборок. Сохраните его как секрет GitHub Actions TATNET_API_KEY.
  3. В Variables задайте TATNET_APP_ID — UUID приложения. Использование UUID исключает неоднозначность одинаковых имён. В TATNET_CLI_VERSION задайте протестированную версию npm-пакета tatnet.

Команды локальной проверки:

tatnet auth status
tatnet app list --all-projects -o json

Рабочий процесс GitHub Actions​

Сохраните в репозитории .github/workflows/tatnet-deploy.yml:

name: Deploy to TatNet
on:
push:
branches: [main]
permissions:
contents: read
concurrency:
group: tatnet-production
cancel-in-progress: false
jobs:
deploy:
runs-on: ubuntu-latest
timeout-minutes: 35
steps:
- uses: actions/setup-node@v7
with:
node-version: '24'
package-manager-cache: false
- name: Install TatNet CLI
env:
CLI_VERSION: ${{ vars.TATNET_CLI_VERSION }}
run: |
test -n "$CLI_VERSION"
npm install -g "tatnet@$CLI_VERSION"
- name: Deploy the pushed commit and wait for live
env:
TATNET_API_KEY: ${{ secrets.TATNET_API_KEY }}
APP_ID: ${{ vars.TATNET_APP_ID }}
run: |
test -n "$TATNET_API_KEY"
test -n "$APP_ID"
tatnet app deploy "$APP_ID" --commit "$GITHUB_SHA" --wait --logs

Checkout не нужен: сборку из Git выполняет TatNet. Ключ находится в секрете CI; интерактивный tatnet auth login не используется. Перед внедрением выберите актуальную поддерживаемую версию Node и проверьте workflow в своём репозитории.

Как понять, что деплой завершён​

Успешный шаг CLI означает, что выбранная сборка перешла в status=success и deploy_state=live. Успешная сборка другого коммита не удовлетворяет ожидание. Ошибка сборки, запуска или таймаут дают ненулевой код выхода. --logs печатает лог в stderr.

Если сборка уже запущена другим процессом, дождитесь её без повторного запуска:

tatnet app wait <app-id> --commit <полный-SHA> --deadline 30m

Сборки и работа ресурсов следуют тарифам TatNet. Эта инструкция запускает реальный деплой в выбранное приложение, поэтому сначала проверьте её на тестовом приложении. Для выкладки локальной папки смотрите tatnet deploy.