Skip to content

Начало работы

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

Установка

sh
opm install pipeliner

Библиотека зависит от autumn, autumn-cli и oscript-yaml — они установятся автоматически.

Как устроена библиотека

Pipeliner построен на DI-фреймворке autumn. Вы описываете джобы в .os-файлах, библиотека собирает их в YAML.

Три главных желудя:

ЖелудьНазначение
ФабрикаЗадачРеестр задач: Новая() создаёт описание задачи и накапливает список
ГенераторПайплайнаГитлабПревращает накопленные задачи в YAML и пишет файл
ОписаниеПайплайнаТоп-левел настройки: глобальные переменные, coverage, before/after script

Первый пайплайн

Создайте скрипт build.os:

bsl
#Использовать pipeliner
#Использовать autumn
#Использовать oscript-yaml

Поделка = Новый Поделка();
Поделка.ЗапуститьПриложение();

Фабрика = Поделка.НайтиЖелудь("ФабрикаЗадач");
Генератор = Поделка.НайтиЖелудь("ГенераторПайплайнаГитлаб");

Сборка = Фабрика.Новая();
Сборка.Наименование = "build";
Сборка.Стадия = "build";
Сборка.Образ.Имя = "alpine:3.19";
Сборка.Скрипты.Добавить("make build");

Тесты = Фабрика.Новая();
Тесты.Наименование = "test";
Тесты.Стадия = "test";
Тесты.Нуждается.Добавить("build");
Тесты.Скрипты.Добавить("make test");

Генератор.СформироватьПайплайн(".gitlab-ci.yml");

Запустите:

sh
oscript build.os

Получите .gitlab-ci.yml — закоммитьте его в репозиторий.

Важные правила

  1. Задачи создавайте только через Фабрика.Новая() — прямой Новый ОписаниеЗадачи() уходит мимо DI и реестра задач.
  2. Пустые поля не выводятся — если поле/список не заполнены, ключ не попадёт в YAML. Чистый вывод без мусора.
  3. Валидация на генерации — ошибка в needs, недопустимое условие retry, отсутствие тега у релиза и т.п. роняют генерацию с понятным текстом до записи файла.

Повторное использование конфигурации

Общая настройка джоб выносится в обычную процедуру OneScript:

bsl
Процедура НастроитьDeployДжобу(Задача)
	Задача.Стадия = "deploy";
	Задача.Образ.Имя = "alpine:3.19";
	Задача.Окружение.Имя = "production";
	Задача.Кэш.ДобавитьПуть("vendor/");
КонецПроцедуры

ДеплойПрод = Фабрика.Новая();
ДеплойПрод.Наименование = "deploy-prod";
НастроитьDeployДжобу(ДеплойПрод);
ДеплойПрод.Скрипты.Добавить("make deploy-PROD");

ДеплойСтейдж = Фабрика.Новая();
ДеплойСтейдж.Наименование = "deploy-stage";
НастроитьDeployДжобу(ДеплойСтейдж);
ДеплойСтейдж.Окружение.Имя = "staging";
ДеплойСтейдж.Скрипты.Добавить("make deploy-STAGE");

Это ключевая идея pipeliner: вместо YAML-шаблонов (extends) — обычные BSL-процедуры, с параметрами, условиями и автоподсказками.

Локальный запуск вне GitLab

Ссылки на переменные GitLab ($CI_COMMIT_TAG и т.п.) при локальной генерации работают: недостающие переменные возвращают своё имя ("$CI_COMMIT_TAG"), поэтому пайплайн генерируется без окружения CI.

Дальше