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

Deploy Hooks

Deploy Hooks — это специальные URL, которые позволяют триггерить деплои из внешних систем без настройки Git webhooks.

  • CI/CD пайплайны — деплой после успешных тестов
  • CMS — деплой при обновлении контента
  • Scheduled deployments — деплой по расписанию (cron)
  • Manual triggers — кнопка деплоя в других системах
  1. Откройте настройки проекта

    Перейдите в проект → SettingsGit

  2. Найдите секцию Deploy Hooks

  3. Нажмите “Create Hook”

  4. Заполните форму

    ПолеОписание
    NameНазвание (для идентификации)
    BranchВетка для деплоя
    ScopeProduction, Preview, или All
  5. Сохраните

    ONREZA сгенерирует уникальный URL и токен

https://api.onreza.ru/v1/hooks/{token}

Где {token} — 64-символьная hex-строка (256 бит энтропии).

Окно терминала
curl -X POST https://api.onreza.ru/v1/hooks/{token} \
-H "Content-Type: application/json" \
-d '{
"commitSha": "abc123def456...",
"branch": "main",
"message": "Deploy from CI"
}'
name: Deploy to ONREZA
on:
workflow_dispatch:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Trigger Deploy Hook
run: |
curl -X POST "${{ secrets.ONREZA_DEPLOY_HOOK_URL }}" \
-H "Content-Type: application/json" \
-d "{\"commitSha\": \"${{ github.sha }}\", \"branch\": \"${{ github.ref_name }}\", \"message\": \"Deploy from GitHub Actions\"}"
deploy:
stage: deploy
script:
- |
curl -X POST "$ONREZA_DEPLOY_HOOK_URL" \
-H "Content-Type: application/json" \
-d "{\"commitSha\": \"$CI_COMMIT_SHA\", \"branch\": \"$CI_COMMIT_BRANCH\", \"message\": \"Deploy from GitLab CI\"}"
only:
- main
Окно терминала
# crontab -e
# Деплой каждый день в 3:00
0 3 * * * curl -X POST "https://api.onreza.ru/v1/hooks/YOUR_TOKEN" -H "Content-Type: application/json" -d '{"commitSha":"latest","branch":"main","message":"Scheduled deploy"}'
Способ аутентификацииТребуется X-Workspace
Session (cookie)Да
API ключ (nrz_*)Нет (workspace в токене)
Device FlowНет (workspace в токене)
ScopeОписание
ProductionСоздаёт production deployment
PreviewСоздаёт preview deployment
AllСоздаёт деплой согласно branch pattern
ПараметрОбязательныйОписание
commitShaДаSHA коммита для деплоя (40 символов hex)
branchДаВетка для деплоя
messageДаСообщение деплоя (до 500 символов)
authorНетАвтор деплоя (до 200 символов)

При успешном триггере возвращается:

{
"id": "deployment-uuid",
"status": "PENDING",
"isPreview": false,
"url": "https://myproject-abc123-workspace.onreza.app",
"urls": {
"unique": "https://myproject-abc123-workspace.onreza.app",
"branch": "https://myproject-git-main-workspace.onreza.app",
"production": "https://myproject-workspace.onreza.app"
},
"message": "Deployment triggered successfully via webhook"
}

На странице Deploy Hooks видна статистика:

  • Triggered Count — сколько раз использовался
  • Last Triggered — когда последний раз

Если токен скомпрометирован:

  1. Найдите hook в списке
  2. Нажмите Regenerate
  3. Скопируйте новый URL
  4. Обновите URL во всех системах
  1. Найдите hook в списке
  2. Нажмите удалить (корзина)
  3. Подтвердите
ХарактеристикаWebhooksDeploy Hooks
ИсточникGit провайдерЛюбая система
Триггерgit pushHTTP POST или CLI
АвтоматическиДаНужен явный вызов
Commit infoИз gitУказывается вручную
  • Храните URL в секретах (GitHub Secrets, GitLab Variables)
  • Не логируйте URL
  • Регулярно ротируйте токены
  1. Проверьте что URL скопирован полностью
  2. Проверьте что hook не был удалён
  3. Регенерируйте токен если нужно
  1. Используйте CLI вместо прямых HTTP-запросов
  2. Или убедитесь что используете API key аутентификацию

Ошибка: Hook is scoped to PRODUCTION, but branch 'feature' is not production branch

  1. Проверьте scope hook’а
  2. Используйте scope All если хотите деплоить любую ветку
  3. Или создайте отдельные hooks для production и preview
  1. Проверьте scope — возможно он не соответствует ветке
  2. Проверьте что ветка существует в репозитории
  3. Проверьте логи в ONREZA
  1. Убедитесь что ветка существует в репозитории
  2. Проверьте что Git провайдер подключён
  3. Проверьте что токен провайдера действителен
# GitHub Actions
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm test
deploy:
needs: test # Только после успешных тестов
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Trigger Deploy Hook
run: |
curl -X POST "${{ secrets.ONREZA_DEPLOY_HOOK_URL }}" \
-H "Content-Type: application/json" \
-d "{\"commitSha\": \"${{ github.sha }}\", \"branch\": \"main\", \"message\": \"Deploy after tests\"}"
// Headless CMS webhook handler
export async function handleContentUpdate(event) {
// Триггер деплоя при публикации контента
await fetch(process.env.ONREZA_DEPLOY_HOOK_URL, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
commitSha: 'latest',
branch: 'main',
message: `CMS update: ${event.type}`,
}),
});
}
Окно терминала
# Ежедневный rebuild в 3:00 для обновления данных
0 3 * * * curl -X POST "https://api.onreza.ru/v1/hooks/YOUR_TOKEN" -H "Content-Type: application/json" -d '{"commitSha":"latest","branch":"main","message":"Scheduled rebuild"}'