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

Триггеры

Триггеры объявляются в pipeline.Main. Публикация реконсилит их в записи, принадлежащие пайплайну; удалённая декларация удаляет свою запись при следующей публикации.

КонструкторКогда запускаетВажные опции
trigger.Cron(spec)срабатывает пятичастное cron-расписаниеName, Params
trigger.Webhook(name)сервер получает hook-запросHookSecret, Params
trigger.Upstream(pipeline)завершился другой пайплайнOnOutcome, Name, Params

Cron

trigger.Cron("0 3 * * *",
trigger.Name("nightly"),
trigger.Params(Params{Mode: "full"}),
)

Имена внутри пайплайна уникальны. Имя cron по умолчанию — cron.

Webhook

trigger.Webhook("push",
trigger.HookSecret("github-hook"),
trigger.Params(Params{Mode: "changed"}),
)

Endpoint: POST /hooks/{namespace}/{pipeline}/{name}. Тело запроса приходит в поле json.RawMessage с tag json:"event,omitempty". HookSecret принимает либо Authorization: Bearer <value>, либо X-Hub-Signature-256: sha256=<HMAC-SHA256(body)>. Без HookSecret у hook нет собственного shared secret; общая защита двери всё равно обязательна.

Upstream

trigger.Upstream("baseline", trigger.OnOutcome("success"))

Outcomes: success, failure, any; по умолчанию success. Event указывает upstream pipeline, run и outcome. Durable payload передавайте через артефакт, а не event.

Params и concurrency

Params триггера должны точно соответствовать типу Params пайплайна. Бинарь проверяет их до запуска worker, поэтому устаревшая декларация ломается при публикации, а не во время будущего firing. pipeline.Var и pipeline.UseSecret не дают значениям инсталляции попасть в исходники.

Пересечения автоматических запусков разрешает concurrency policy. Queue хранит не больше одного pending firing и не является безразмерной очередью задач.