Начало работы
Раздел показывает путь от установки до первого сгенерированного пайплайна.
Установка
opm install pipelinerБиблиотека зависит от autumn, autumn-cli и oscript-yaml — они установятся автоматически.
Как устроена библиотека
Pipeliner построен на DI-фреймворке autumn. Вы описываете джобы в .os-файлах, библиотека собирает их в YAML.
Три главных желудя:
| Желудь | Назначение |
|---|---|
ФабрикаЗадач | Реестр задач: Новая() создаёт описание задачи и накапливает список |
ГенераторПайплайнаГитлаб | Превращает накопленные задачи в YAML и пишет файл |
ОписаниеПайплайна | Топ-левел настройки: глобальные переменные, coverage, before/after script |
Первый пайплайн
Создайте скрипт build.os:
#Использовать pipeliner
#Использовать autumn
#Использовать oscript-yaml
Поделка = Новый Поделка();
Поделка.ЗапуститьПриложение();
Фабрика = Поделка.НайтиЖелудь("ФабрикаЗадач");
Генератор = Поделка.НайтиЖелудь("ГенераторПайплайнаГитлаб");
Сборка = Фабрика.Новая();
Сборка.Наименование = "build";
Сборка.Стадия = "build";
Сборка.Образ.Имя = "alpine:3.19";
Сборка.Скрипты.Добавить("make build");
Тесты = Фабрика.Новая();
Тесты.Наименование = "test";
Тесты.Стадия = "test";
Тесты.Нуждается.Добавить("build");
Тесты.Скрипты.Добавить("make test");
Генератор.СформироватьПайплайн(".gitlab-ci.yml");Запустите:
oscript build.osПолучите .gitlab-ci.yml — закоммитьте его в репозиторий.
Важные правила
- Задачи создавайте только через
Фабрика.Новая()— прямойНовый ОписаниеЗадачи()уходит мимо DI и реестра задач. - Пустые поля не выводятся — если поле/список не заполнены, ключ не попадёт в YAML. Чистый вывод без мусора.
- Валидация на генерации — ошибка в
needs, недопустимое условиеretry, отсутствие тега у релиза и т.п. роняют генерацию с понятным текстом до записи файла.
Повторное использование конфигурации
Общая настройка джоб выносится в обычную процедуру OneScript:
Процедура Настроить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.
Дальше
- Описание задачи — все поля и методы джобы
- Стадии и .pre/.post
- CLI
