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

Main

Пайплайн — программа с одной точкой входа:

func main() {
pipeline.Main("perf-nightly", run,
pipeline.WithTriggers(
trigger.Cron("0 3 * * *", trigger.Params(map[string]any{...})),
trigger.Webhook("push", trigger.HookSecret("gh-hook")),
),
pipeline.WithConcurrency(pipeline.Queue),
)
}

func run(ctx pipeline.Context, params Params) (Result, error) { ... }

Main принимает идентификатор пайплайна, типизированную функцию и опции уровня пайплайна. Роль (run / machine) и подключение приходят из окружения — один бинарь обслуживает обе; см. Модель выполнения.

Params и Result

Вход и выход рана — типы функции:

// Из этого типа выводятся форма в UI и валидация сабмита.
type Params struct {
// Event получает тело запроса webhook-триггера (зарезервированное имя).
Event json.RawMessage `json:"event,omitempty"`
FolderId string `json:"folderId"`
Keep time.Duration `json:"keep"`
}

// Только маленькие значения — большие данные ходят артефактами.
type Result struct {
Report string `json:"report"`
VmId string `json:"vmId"`
}

Контракт параметров проверяет компилятор, а не соглашение о строках. Result — то, что CLI и браузер показывают для завершённого рана.

Context

ctx несёт только то, чего не существует вне рана — идентификатор рана и логгер. Всё, что действует, — свободные функции, принимающие ctx первым аргументом: объявление ресурсов, действия, ссылки на секреты.

Триггеры

Раны стартуют не только руками: пайплайн объявляет триггеры — cron-расписание, webhook или результат другого пайплайна. Параметры триггера — те же типизированные Params; тело запроса webhook приходит в зарезервированное поле Event, а HookSecret называет секрет аутентификации вызывающего.

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

Upstream trigger — явный межпайплайновый control contract. Event называет upstream pipeline, run и outcome; durable data отдельно передаются артефактом.

Concurrency

Политика concurrency управляет АВТОМАТИЧЕСКИМИ стартами:

ПолитикаПри срабатывании во время живого рана
Queue (по умолчанию)отложить до завершения; максимум один отложенный — cron-семантика, без накопления
CancelPreviousотменить живой ран, стартовать новый
Parallelстартовать независимо

Ручной старт при живом ране под Queue отклоняется с внятной ошибкой.

Локальные тесты

Моделирование зависимостей и проверка пайплайна описаны в руководстве по локальным тестам.