Перейти до вмісту

Налаштувати тригери конвеєра

Тригер — це те, що запускає конвеєр. Кожен із них — вузол на полотні, який перетягують із розділу Тригери в бібліотеці вузлів. Вибір цього вузла відкриває його інспектор праворуч — немає постійного списку тригерів, вкладки тригерів чи окремого екрана тригерів.

  1. Перейдіть до Налаштування → Робочий простір → Шаблони конвеєрів.
  2. Натисніть олівець у рядку шаблону, щоб відкрити редактор.
  3. Виберіть вузол тригера на полотні. Праворуч з’явиться панель із налаштуваннями цього тригера. Якщо нічого не вибрано, панель прихована.

Розділ Тригери в бібліотеці вузлів показує кожен спосіб старту окремим вузлом: ручний запуск, розклад, вебхук і по одній картці на кожну доменну подію. Знайдіть merged, ticket або назву типу (PrMerged) і перетягніть картку на полотно. Новий шаблон також показує плитку-заглушку Додати тригер біля вхідного якоря — виберіть з того самого списку з пошуком.

Тригер вставляється одразу. Нові автоматичні тригери створюються вимкненими, щоб перетягування не запустило конвеєр до того, як ви його налаштуєте. Перемикач Увімкнено в інспекторі вмикає тригер, а іконка кошика видаляє його.

Перетягніть Ручний запуск (або виберіть його з плитки-заглушки) і увімкніть Увімкнено в його інспекторі. Саме це змушує шаблон з’явитися в селекторі запуску. Це не особливий випадок — перемикач записує звичайний рядок тригера з типом події manual. Він зберігається одразу; зберігати нічого не треба.

Той самий перемикач стоїть за кнопкою Ручний запуск у заголовку редактора, поруч із оголошеними входами шаблону.

Ці події запускають конвеєр:

Напис у селекторі Подія
Відкрито зовнішній PR ExternalPrDetected
PR опубліковано PullRequestPublished
Змінено статус PR PullRequestStatusChanged
PR злито PrMerged
Отримано повідомлення MessageReceived
Тікет створено TicketCreated
Статус тікета змінено TicketStatusChanged
Тікет призначено TicketAssigned
Тікет завершено TicketCompleted
Тікет завершився помилкою TicketFailed
Тікет скасовано TicketCancelled
Перетнуто поріг бюджету BudgetThresholdCrossed
Додано репозиторій RepoAdded
Запис зустрічі зупинено MeetingRecordingStopped
Навичку оновлено SkillUpdated
Простір видалено SpaceDeleted

SpaceDeleted — це подія, на яку слухає вбудований конвеєр прибирання робочих дерев: вона несе ідентифікатор видаленого простору, тож запуск прибирає робочі дерева саме цього простору, а не прочісує весь робочий простір.

Ключі корисного навантаження, які несе кожна подія, дивіться в довідці з доменних подій.

Виберіть вузол Змінено статус PR. Чіпи статусів в інспекторі — це єдиний фільтр, який можна задати в інтерфейсі. Натисніть будь-який із merged, closed, approved, opened, reopened; тоді тригер спрацьовує, лише коли status події збігається з одним із них. Якщо не вибрано жодного чіпа, фільтра немає.

Поля для довільного JSON-фільтра немає. Ключ фільтра, якого немає в корисному навантаженні події, ніколи не збігається, тож не задавайте його вручну для ключа, який ви не підтвердили в довідці з доменних подій.

Виберіть вузол Розклад, щоб змінити час його спрацьовування. Поля в інспекторі зберігаються такими, якими ви їх залишаєте:

Поле Опис
Розклад (cron або every:seconds) Cron-вираз із п’яти полів, як-от 0 9 * * 1, або інтервал, як-от every:86400. Голе число приводиться до every:<n>.
Часовий пояс (необов’язково) Зона IANA, як-от Europe/Paris. Типово UTC.
Пропущені запуски Що робити зі спрацьовуваннями, пропущеними, поки сервер був недоступний: Запустити один раз згортає всі пропущені слоти в одне спрацьовування після перезапуску (типово), Пропустити відновлюється з наступного майбутнього слота.

Рядок підсумку на плитці полотна розписує інтервал лише для форми every:<seconds>; cron-вираз показується просто як «Розклад».

Перетягування Webhook створює випадковий токен. Виберіть вузол, щоб скопіювати шлях POST /webhooks/<token> з інспектора.

Токен також є секретом HMAC: запит має нести X-Hub-Signature-256: sha256=<hex>, де hex — це HMAC-SHA256(body, token). Доставку, яка не проходить перевірку, відхиляють і записують у журнал, і її не можна відтворити повторно. Дублікати відкидаються за їхнім ключем дедуплікації.

Кожен старт — це окремий вузол графа. З’єднання, проведене від Розкладу, приєднує лише Розклад; Ручний запуск може йти іншим шляхом (наприклад, через вузол умови), перш ніж приєднатися до тієї самої роботи. Запуск входить у старт, що відповідає його типу події, і пропускає підграфи, які належать іншим стартам.

Увімкнений тригер, у якого збігаються і тип події, і фільтр, запускає конвеєр, а корисне навантаження події стає тригерним навантаженням запуску — саме з ним зіставляється {{key}} у промпті чи скрипті кроку. Події, що несуть природний ключ, дедуплікуються, тож одна подія, що спрацювала двічі, не запускає два запуски.

Вимкнений шаблон відхиляється, навіть коли його тригер збігається. Вісім із тринадцяти вбудованих шаблонів постачаються вимкненими, тож їхні засіяні тригери спрацьовують у порожнечу, поки ви не ввімкнете шаблон.

  • Обмежити лише ручний шлях — з’єднайте Ручний запуск через вузол умови, а Розклад — напряму з роботою. Кожен старт має власні з’єднання.
  • Перевіряти кожен новий PR — подія PR опубліковано на шаблоні pr_review.
  • Прибирати після злиття — подія Змінено статус PR, відфільтрована до merged / closed / approved. Вбудований шаблон pr_merged_cleanup уже слухає саме так, а також тікет завершено/скасовано, SpaceDeleted і щоденний розклад, який примусово вмикається під час кожного повторного засівання, бо це збирання сміття.
  • Щонічне прибирання — розклад 0 2 * * * із часовим поясом, на шаблоні, чий перший вузол — скрипт bash.
  • Реагувати на зовнішню систему — вебхук-тригер, де система, що викликає, підписує тіло свого запиту, як описано вище.