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

1 запись с тегом "task-runner"

Посмотреть все теги

Каким должен быть task runner для сборки проектов

· 2 мин. чтения
Дмитрий Чудный
Автор сайта

Соображения по поводу того, каким хотелось бы видеть инструмент для запуска многошагового CI/CD процесса проектов

  • Процесс сборки разделён на атомарные логические единицы - шаги сборки
  • Чтобы описать весь процесс прописываем какие шаги сборки нам нужны в нём, корневой шаг сборки
  • Шаги сборки могут иметь другие вложенные шаги сборки, получается дерево шагов сборки
  • Шаги сборки могут зависеть от результатов работы предыдущих шагов сборки, исходящие результаты одних шагов передаются в параметры других шагов
  • Инструмент сам разрешает порядок выполнения шагов по их зависимости друг от друга
  • Шаги сборки могут выполняться как последовательно так и параллельно, это решает инструмент
  • Интерфейс шага сборки имеет строгое декларативное описание:
    • Структура и типы входящих параметров
    • Структура и типы исходящих результатов
  • Инструмент выполняет валидацию параметров и результатов шагов сборки, не пропуская некорректные данные
  • Исходящие данные одного шага сборки можно передать во входящие параметры другого шага
  • Исходящие данные шага сборки можно получить в JSON или другом формате
  • Описание сборки выполняется на языке программирования, что позволяет
    • Генерировать шаги сборки с разными параметрами (матрица, комбинации параметров)
    • Читать файлы
    • Задавать сложные условия и выражения для вычисления параметров
    • В разных шагах сборки можно использовать объекты описанные где-то в одном месте, не надо ничего копипастить
    • Из библиотек доступно множество функций для удобной реализации логики сборки
  • Есть удобный встроенный шаблонизатор для генерации файлов скриптов и конфигов
  • Перед запуском сборки можно посмотреть сгенерированную конфигурацию
  • Возможность описать шаги и процесс сборки по-умолчанию и применять его во многих проектах
  • Предусмотрено версионирование шагов и процесса сборки, в проектах можно переходить на новую версию процесса сборки по мере необходимости и возможности
  • В проекте можно переопределить логику выполнения любого шага сборки, при этом можно вызвать логику шага по-умолчанию
  • В описании шага сборки можно указать docker контейнер, в котором его необходимо запустить (для CI/DI окружения)
  • При запуске сборки настройкой можно отключить использование docker контейнеров и все шаги запускать как есть на машине (для локальной разработки)