Pipeliner
Pipeliner — библиотека для OneScript, которая генерирует .gitlab-ci.yml из декларативного описания на BSL.
Вместо ручного редактирования YAML вы описываете джобы кодом: с типами, автодоподсказками IDE, валидацией на этапе генерации и повторным использованием через обычные процедуры OneScript.
Зачем это нужно
YAML для CI/CD быстро разрастается: десятки джоб, копипаста, легко опечататься в ключе — и GitLab молча сделает не то, что вы хотели. Pipeliner решает это так:
- Модель вместо текста — джоба это объект
ОписаниеЗадачис полями и методами. Ошиблись в имени метода — IDE подсветит, а не GitLab в продакшене. - Валидация при генерации —
needsпроверяется на существование джоб,retry:whenи виды отчётов на допустимые значения,environmentна согласованность. Невалидный пайплайн не запишется на диск. - Идиома языка — общая конфигурация джоб выносится в обычную BSL-процедуру. Не нужны extends-шаблоны: язык уже умеет всё это лучше.
Быстрый старт
bsl
#Использовать pipeliner
#Использовать autumn
#Использовать oscript-yaml
Поделка = Новый Поделка();
Поделка.ЗапуститьПриложение();
Фабрика = Поделка.НайтиЖелудь("ФабрикаЗадач");
Сборка = Фабрика.Новая();
Сборка.Наименование = "build";
Сборка.Стадия = "build";
Сборка.Образ.Имя = "alpine:3.19";
Сборка.Скрипты.Добавить("make build");
Тесты = Фабрика.Новая();
Тесты.Наименование = "test";
Тесты.Стадия = "test";
Тесты.Нуждается.Добавить("build");
Тесты.Скрипты.Добавить("make test");
Генератор = Поделка.НайтиЖелудь("ГенераторПайплайнаГитлаб");
Генератор.СформироватьПайплайн(".gitlab-ci.yml");Получится:
yaml
stages:
- build
- test
build:
when: on_success
stage: build
tags: []
image:
name: alpine:3.19
script:
- make build
test:
when: on_success
stage: test
tags: []
needs:
- build
script:
- make testУстановка
sh
opm install pipelinerCLI
Библиотека имеет консольный интерфейс:
sh
pipeliner gitlab pipeline.ymlПодробности в разделе CLI.
