StepActions
StepAction — это переиспользуемая и скриптуемая единица работы, выполняемая в Step в Tekton Pipelines. StepActions позволяют определять контейнеризированные операции, которые могут быть использованы и переиспользованы в разных Tasks.
Содержание
Зачем нужны StepActionsТрадиционные проблемы с TasksРешение TektonПреимуществаСценарии использованияОграничения и лимитыПринципыМодель выполнения StepActionМодель ссылокПримеры конфигурацииПример базового StepActionСсылка на StepAction в TaskВажные параметрыПараметрыСценарии использованияПринципыПример конфигурацииРезультатыСценарии использованияПринципыПример конфигурацииWorkingDirСценарии использованияПример конфигурацииSecurityContextСценарии использованияПример конфигурацииVolumeMountsСценарии использованияПример конфигурацииWhen ExpressionsСценарии использованияПример конфигурацииУдалённые StepActionsСценарии использованияПример конфигурацииСсылкиЗачем нужны StepActions
Традиционные проблемы с Tasks
До появления StepActions Tasks сталкивались с рядом ограничений:
- Переиспользуемость: Steps, определённые внутри Tasks, было сложно извлечь и использовать повторно
- Поддерживаемость: Общая логика шагов дублировалась в разных Tasks
- Версионирование: Трудно было отдельно контролировать версии отдельных шагов вне Tasks
- Согласованность: Сложно было обеспечить единообразную реализацию общих операций
Решение Tekton
StepActions решают эти проблемы за счёт:
- Переиспользуемости на уровне шагов: Инкапсуляция общих операций в переиспользуемые компоненты
- Декларативного определения: Определение StepActions как Kubernetes Custom Resources
- Параметризации: Приём параметров для настройки поведения
- Выдачи результатов: Генерация результатов, которые могут использоваться другими шагами
- Управления ресурсами: Определение требований к ресурсам отдельно от Tasks
Преимущества
- Модульность: Разбиение сложных операций на переиспользуемые компоненты
- Согласованность: Обеспечение идентичной реализации общих операций в разных Tasks
- Поддерживаемость: Обновление StepAction один раз приносит пользу всем ссылающимся Tasks
- Ясность: Разделение определения того, что делать (StepAction), и когда делать (Step)
- Версионирование: Независимый контроль версий StepActions и Tasks
Сценарии использования
StepActions полезны в различных сценариях, включая:
- Общие операции: Git clone, сборка образов, сканирование безопасности
- Стандартизированные инструменты: Линтеры, форматтеры, тестовые раннеры
- Логика, специфичная для организации: Кастомные процедуры деплоя, процессы утверждения
- Общие утилиты: Генерация версий, валидация конфигураций
- Интеграционные компоненты: Взаимодействие с сервисами, операции с API
Ограничения и лимиты
- StepActions можно использовать только внутри Steps
- Нельзя передавать результаты Step между Steps
- Параметры нельзя использовать напрямую в скриптах (только через переменные окружения)
- StepActions не могут запускаться автономно (в отличие от TaskRuns или PipelineRuns)
- Требуется включённый флаг функции
enable-step-actionsсо значением "true"
Принципы
Модель выполнения StepAction
Когда Step ссылается на StepAction:
- Step предоставляет необходимый контекст и параметры
- StepAction определяет образ контейнера и логику выполнения
- Step может переопределять некоторые параметры, например ресурсы и таймаут
- Ссылаемый StepAction выполняет свои команды или скрипт
- Результаты StepAction могут использоваться последующими шагами
Модель ссылок
StepActions не являются компонентами Steps. Вместо этого:
- Step — это исполняемый компонент, который может ссылаться на StepAction
- Step обеспечивает оркестрацию и контекст
- StepAction предоставляет переиспользуемую логику
- Step может ссылаться на локальные или удалённые StepActions
Примеры конфигурации
Пример базового StepAction
Ссылка на StepAction в Task
Важные параметры
Параметры
Параметры позволяют настраивать StepActions при их использовании в Steps.
Сценарии использования
- Настройка данных подключения
- Указание целей или назначений
- Установка флагов работы
- Определение информации о версиях
- Управление поведением
Принципы
Параметры в StepActions:
- Объявляются в спецификации StepAction
- Могут иметь значения по умолчанию
- Передаются из ссылающегося Step
- Поддерживают типы string, array и object
- Не могут использоваться напрямую в скриптах (следует использовать через переменные окружения)
Пример конфигурации
Результаты
Результаты позволяют StepActions выдавать значения, которые могут использоваться другими Steps или Tasks.
Сценарии использования
- Обмен информацией о сборке
- Передача сгенерированных идентификаторов
- Сообщение статуса
- Предоставление местоположения артефактов
Принципы
Результаты:
- Объявляются в спецификации StepAction
- Записываются в определённый файл StepAction
- Доступны для последующих Steps или Tasks
Пример конфигурации
WorkingDir
WorkingDir позволяет указать рабочую директорию для StepAction.
Сценарии использования
- Установка правильного контекста для операций
- Обеспечение выполнения команд в нужном месте
- Поддержание согласованности при использовании StepAction
Пример конфигурации
SecurityContext
SecurityContext позволяет настроить параметры безопасности для StepAction.
Сценарии использования
- Настройка прав контейнера
- Определение user и group ID
- Управление ограничениями безопасности
Пример конфигурации
VolumeMounts
VolumeMounts позволяют StepActions получить доступ к внешнему хранилищу.
Сценарии использования
- Доступ к конфигурационным файлам
- Хранение постоянных данных
- Обмен информацией между шагами
Пример конфигурации
When Expressions
When Expressions позволяют контролировать, должен ли выполняться Step, ссылающийся на StepAction.
Сценарии использования
- Условное выполнение на основе параметров
- Пропуск шагов при отсутствии workspace
- Управление потоком работы на основе результатов предыдущих шагов
Пример конфигурации
Удалённые StepActions
StepActions могут ссылаться на удалённые ресурсы, например git-репозитории.
Сценарии использования
- Централизованное управление StepActions
- Контроль версий StepActions
- Совместное использование StepActions между организациями