Публичный интерфейс библиотеки pipeliner
Желуди
Под-объекты задачи
Список под-объектов
Модули
ВидыОтчетов
Модуль-константа видов отчётов для artifacts:reports. Источник правды — именованные методы, набор Допустимые() наполняется из них.
Методы-виды
| Метод | Значение |
|---|---|
Юнит() | junit |
САСТ() | sast |
ДАСТ() | dast |
Дотенв() | dotenv |
СканированиеЗависимостей() | dependency_scanning |
ПоискСекретов() | secret_detection |
КачествоКода() | codequality |
СканированиеКонтейнеров() | container_scanning |
САРИФ() | sarif |
ЦиклонДХ() | cyclonedx |
Терраформ() | terraform |
ФаззингАПИ() | api_fuzzing |
ФаззингПокрытия() | coverage_fuzzing |
ПроизводительностьБраузера() | browser_performance |
НагрузочныеТесты() | load_performance |
Доступность() | accessibility |
Аннотации() | annotations |
Метрики() | metrics |
Требования() | requirements |
Форматы покрытия
Для ДобавитьОтчетПокрытия(): Кобертура() (cobertura), Джакоко() (jacoco), ЛКов() (lcov), СимплКов() (simplecov).
Справочные методы
Допустимые()— массив всех допустимых видовФорматыПокрытия()— массив допустимых форматов покрытия
Пример
Задача.Артефакты.ДобавитьОтчет(ВидыОтчетов.Юнит(), "junit.xml");
Задача.Артефакты.ДобавитьОтчетПокрытия(ВидыОтчетов.Кобертура(), "coverage.xml");Время
Модуль форматирования длительности для ключей вида timeout, start_in, auto_stop_in.
| Функция | Пример результата |
|---|---|
ВСекунды(2) | 2 seconds |
ВМинуты(30) | 30 minutes |
ВЧасы(2) | 2 hours |
ВДни(3) | 3 days |
ВНедели(1) | 1 week |
ВМесяцы(6) | 6 months |
ВГоды(2) | 2 years |
Пример
Задача.Таймаут = Время.ВЧасы(2);
Деплой.Окружение.АвтоОстановка = Время.ВНедели(1);ГенераторПайплайнаГитлаб
Собирает YAML пайплайна из накопленных задач и записывает в файл.
Получение:
Генератор = Поделка.НайтиЖелудь("ГенераторПайплайнаГитлаб");СформироватьПайплайн(ПутьКФайлу)
Валидирует задачи и пишет YAML пайплайна.
Генератор.СформироватьПайплайн(".gitlab-ci.yml");Параметры:
ПутьКФайлу- Строка - путь к файлу результата
Валидации, выполняемые при генерации:
| Проверка | Исключение |
|---|---|
needs ссылается на несуществующую джобу | С перечнем доступных джоб |
СтартоватьСразу + непустой Нуждается | Взаимоисключающие настройки |
Окружение заполнено без Имя | Нельзя построить валидный environment |
Окружение.Действие не из набора | С перечнем допустимых |
Окружение.ПриОстановке на несуществующую джобу | По образцу needs |
Релиз заполнен без Тег/Описание | С именем задачи |
Джоба pages без артефактов/публикации | Не опубликует ничего |
Джоба pages не в стадии deploy | Требование GitLab |
| Параллельность: заданы и число, и матрица | Взаимоисключающие |
Порядок топ-левел секций: default → stages → variables → coverage → джобы.
Пустые значения не выводятся в YAML.
Гитлаб
Модуль-помощник для работы с окружением GitLab и зарезервированными сущностями.
ПолучитьПеременнуюСредыГитлаб(Переменная)
Возвращает значение переменной среды GitLab. При локальном запуске (вне CI), если переменная не задана, возвращает её имя с префиксом $ — генерация пайплайна работает без окружения GitLab.
Версия = Гитлаб.ПолучитьПеременнуюСредыГитлаб("CI_COMMIT_TAG");
// В CI: реальное значение
// Локально: "$CI_COMMIT_TAG"ИсточникСобытияПайплайна()
Значение CI_PIPELINE_SOURCE.
ЭтоМержРеквест()
Истина, если пайплайн запущен событием мерж-реквеста.
ЗарезервированныеСтадии()
Реестр зарезервированных стадий GitLab — единственное место их перечисления в библиотеке.
Возвращаемое значение: Соответствие, ключ → значение:
| Ключ | Значение |
|---|---|
ДоВсех | .pre |
ПослеВсех | .post |
Генератор фильтрует эти стадии из stages по реестру; сахар Задача.ДоВсех()/ПослеВсех() берёт имена из него же. Новая зарезервированная стадия добавляется одной строкой в реестр.
ДействияОкружения
Модуль-константа действий для environment:action. Источник правды — именованные методы, набор Допустимые() наполняется из них.
Методы
| Метод | Значение | Смысл |
|---|---|---|
Запуск() | start | Развёртывание (дефолт) |
Подготовка() | prepare | Подготовить окружение без создания |
Остановка() | stop | Остановить окружение |
Проверка() | verify | Проверить окружение |
Доступ() | access | Только доступ |
Допустимые()
Массив всех значений — используется для валидации в генераторе.
Пример
СтопДжоба.Окружение.Действие = ДействияОкружения.Остановка();ЛокаторСтадийПайплайна
Загружает стадии пайплайна из .os-файлов каталога.
При инициализации поделки сканирует каталог (по умолчанию ./pipeline) и подключает каждый *.os-файл как сценарий. Имя файла становится именем сценария.
Настройка каталога
Каталог настраивается через &Деталька при создании (значение по умолчанию ./pipeline).
ОписаниеАртефактов
Артефакты джобы (artifacts). Доступ: Задача.Артефакты
Поля
| Поле | Тип | YAML-ключ |
|---|---|---|
Имя | Строка | name |
Когда | Строка | when |
ВремяХранения | Строка | expire_in |
Пути | Массив из Строка | paths |
Исключить | Массив из Строка | exclude |
Неотслеживаемые | Булево | untracked |
Публичный | Булево | public |
ПоказыватьКак | Строка | expose_as |
Отчеты | Соответствие | reports |
Методы
ДобавитьПуть(Путь)
Добавляет путь в артефакты.
ДобавитьИсключение(Путь)
Добавляет исключение (маску) из артефактов.
ДобавитьОтчет(Тип, Путь)
Добавляет отчёт по типу с валидацией типа. Тип берите из модуля ВидыОтчетов:
Задача.Артефакты.ДобавитьОтчет(ВидыОтчетов.Юнит(), "junit.xml");
Задача.Артефакты.ДобавитьОтчет(ВидыОтчетов.САСТ(), "gl-sast-report.json");Недопустимый вид → исключение с перечнем допустимых.
ДобавитьОтчетПокрытия(Формат, Путь)
Отчёт покрытия coverage_report с валидацией формата (cobertura/jacoco/lcov/simplecov):
Задача.Артефакты.ДобавитьОтчетПокрытия(ВидыОтчетов.Кобертура(), "coverage.xml");Пример
Артефакты = Задача.Артефакты;
Артефакты.Имя = "$CI_JOB_NAME-artifacts";
Артефакты.ВремяХранения = "1 week";
Артефакты.ДобавитьПуть("dist/");
Артефакты.ДобавитьИсключение("dist/*.tmp");
Артефакты.ДобавитьОтчет(ВидыОтчетов.Юнит(), "junit.xml");ОписаниеЗадачи
Модель джобы пайплайна. Все поля экспортные, пустые значения не попадают в YAML.
Создание — только через фабрику:
Задача = Фабрика.Новая();Поля
| Поле | Тип | YAML-ключ |
|---|---|---|
Наименование | Строка | имя джобы |
Стадия | Строка | stage |
Скрипты | Массив из Строка | script |
ПередСкрипты | Массив из Строка | before_script |
ПослеСкрипты | Массив из Строка | after_script |
Когда | Строка | when |
ТегиРаннера | Массив из Строка | tags |
Таймаут | Строка | timeout |
Прерываемый | Булево | interruptible |
РазрешитьПадение | Булево | allow_failure |
СтартоватьСразу | Булево | needs: [] |
ГруппаРесурсов | Строка | resource_group |
Нуждается | Массив из Строка | needs |
Зависимости | Массив из Строка | dependencies |
Переменные | Соответствие | variables |
Под-объекты
Создаются лениво при первом обращении:
| Поле | Тип | YAML-ключ |
|---|---|---|
Образ | ОписаниеОбраза | image |
Сервисы + НовыйСервис() | Массив из ОписаниеСервиса | services |
Кэш | ОписаниеКэша | cache |
Артефакты | ОписаниеАртефактов | artifacts |
Повтор | ОписаниеПовтора | retry |
Параллельность | ОписаниеПараллельности | parallel |
Окружение | ОписаниеОкружения | environment |
Релиз | ОписаниеРелиза | release |
Страницы | ОписаниеСтраниц | pages (для джобы с именем pages) |
Методы
ДобавитьПеременную(Имя, Значение)
Переменная окружения джобы.
ДобавитьПравило(Условие = "", Когда = "", Изменения = Неопределено)
Правило rules. Используйте НовыйПравило() для расширенного заполнения.
ДоВсех()
Стадия .pre — джоба выполнится до всех стадий пайплайна.
ПослеВсех()
Стадия .post — после всех стадий.
Пример
Задача = Фабрика.Новая();
Задача.Наименование = "deploy-prod";
Задача.Стадия = "deploy";
Задача.ТегиРаннера.Добавить("prod");
Задача.Таймаут = "1h";
Задача.Прерываемый = Истина;
Задача.ГруппаРесурсов = "production";
Задача.ДобавитьПеременную("TARGET", "prod");
Задача.Нуждается.Добавить("build");
Задача.Скрипты.Добавить("make deploy");ОписаниеКэша
Кэш джобы (cache). Доступ: Задача.Кэш
Поля
| Поле | Тип | YAML-ключ |
|---|---|---|
Пути | Массив из Строка | paths |
ПрефиксКлюча | Строка | префикс key |
КлючПоФайлам | Массив из Строка | key: files |
Политика | Строка | policy |
Неотслеживаемые | Булево | untracked |
Методы
ДобавитьПуть(Путь)
Добавляет путь в кэш.
ДобавитьКлючПоФайлам(Файл)
Добавляет файл в генерацию ключа.
Пример
Задача.Кэш.ДобавитьПуть("vendor/");
Задача.Кэш.ДобавитьКлючПоФайлам("packagedef");ОписаниеОбраза
Образ контейнера джобы (image).
Доступ: Задача.Образ
Поля
| Поле | Тип | Описание |
|---|---|---|
Имя | Строка | Имя образа, например alpine:3.19 |
Энтрипоинт | Массив из Строка | entrypoint |
ПолитикаОбраза | Строка | pull_policy (заполняется через методы ниже) |
Методы
ДобавитьКомандуЭнтрипоинт(Команда)
Добавляет команду в entrypoint.
УказатьПолитику(Политика)
Устанавливает pull_policy с валидацией. Допустимые значения:
always— всегда скачиватьnever— никогда не скачиватьif-not-present— скачать, если отсутствует локальноpull— принудительно выкачивать (GitLab/раннер >= 15.1)
Недопустимое значение — исключение с перечнем допустимых.
Сахар-методы (через УказатьПолитику)
| Метод | Политика |
|---|---|
Всегда() | always |
Никогда() | never |
ЕслиОтсутствует() | if-not-present |
Принудительно() | pull |
ДопустимыеПолитики()
Возвращает массив допустимых политик.
Пример
Задача.Образ.Имя = "docker:latest";
Задача.Образ.Всегда();ОписаниеОкружения
Деплой-окружение джобы (environment). Доступ: Задача.Окружение
Поля
| Поле | Тип | YAML-ключ |
|---|---|---|
Имя | Строка | name |
УРЛ | Строка | url |
ПриОстановке | Строка | on_stop (имя стоп-джобы) |
Действие | Строка | action (см. модуль ДействияОкружения) |
АвтоОстановка | Строка | auto_stop_in, например 1 week |
Валидации при генерации
- Недопустимое действие → исключение с перечнем допустимых (см.
ДействияОкружения.Допустимые()) - Заполнено что-то, но
Имяпустое → исключение (url без name невалиден) ПриОстановкессылается на несуществующую джобу → исключение
Пустое окружение → ключ не выводится.
Пример (review-app паттерн)
// Джоба развёртывания
Деплой.Окружение.Имя = "review/$CI_COMMIT_REF_SLUG";
Деплой.Окружение.УРЛ = "https://$CI_ENVIRONMENT_SLUG.example.com";
Деплой.Окружение.ПриОстановке = "stop-review";
Деплой.Окружение.АвтоОстановка = "1 week";
// Стоп-джоба
Стоп.Окружение.Имя = "review/$CI_COMMIT_REF_SLUG";
Стоп.Окружение.Действие = ДействияОкружения.Остановка();ОписаниеПайплайна
Топ-левел настройки пайплайна. Получение:
ОписаниеПайплайна = Поделка.НайтиЖелудь("ОписаниеПайплайна");Поля
| Поле | Тип | YAML-ключ |
|---|---|---|
ПередСкрипты | Массив из Строка | default.before_script |
ПослеСкрипты | Массив из Строка | default.after_script |
Переменные | Соответствие | variables |
ШаблонПокрытия | Строка | coverage |
Правила | Массив | зарезервировано для workflow |
Методы
ДобавитьПередСкрипт(Команда)
Команда глобального before_script.
ДобавитьПослеСкрипт(Команда)
Команда глобального after_script.
ДобавитьПеременную(Имя, Значение)
Глобальная переменная пайплайна (выводится в корень variables).
Пример
ОписаниеПайплайна.ДобавитьПеременную("REGISTRY", "registry.example.com");
ОписаниеПайплайна.ШаблонПокрытия = "/^Total.*?(\d+\s*)$/";
ОписаниеПайплайна.ДобавитьПередСкрипт("opm install -l");ОписаниеПараллельности
Параллельный запуск джобы (parallel). Доступ: Задача.Параллельность
Поля
| Поле | Тип | YAML-ключ |
|---|---|---|
Количество | Число | parallel (число копий) |
Матрица | Массив из Соответствие | parallel.matrix |
Методы
ДобавитьРядМатрицы(ИмяПеременной, Значения)
Независимый ряд матрицы с одной переменной:
ОС = Новый Массив();
ОС.Добавить("ubuntu");
ОС.Добавить("windows");
Задача.Параллельность.ДобавитьРядМатрицы("OS", ОС);ДобавитьРяд(Ряд)
Ряд из соответствия — комбинации всех переменных ряда перемножаются (декартово произведение):
Ряд = Новый Соответствие();
Ряд.Вставить("OS", ОС);
Ряд.Вставить("VERSION", Версии);
Задача.Параллельность.ДобавитьРяд(Ряд);Валидация
Число и матрица взаимоисключающие — одновременное задание роняет генерацию.
Вывод
# Число
parallel: 5
# Независимые ряды
parallel:
matrix:
- OS: [ubuntu, windows]
- VERSION: ["17", "19"]
# Декартово произведение
parallel:
matrix:
- OS: [ubuntu, windows]
VERSION: ["17", "19"]Копии получают CI_NODE_INDEX и CI_NODE_TOTAL.
ОписаниеПовтора
Политика повторных запусков джобы (retry). Доступ: Задача.Повтор
Поля
| Поле | Тип | YAML-ключ |
|---|---|---|
Повторы | Число | max (или скалярный retry) |
ПовторыКогда | Массив из Строка | when |
КодыВыхода | Массив из Числа | exit_codes |
Методы
ДобавитьУсловие(Условие)
Добавляет условие повтора с валидацией. Условия берите из модуля УсловияПовтора:
Задача.Повтор.ДобавитьУсловие(УсловияПовтора.СбойСкрипта());
Задача.Повтор.ДобавитьУсловие(УсловияПовтора.СбойРаннера());ДобавитьКодВыхода(Код)
Код выхода, при котором повторять:
Задача.Повтор.ДобавитьКодВыхода(42);Вывод
| Задано | YAML |
|---|---|
| Только число | retry: 2 |
| Одно условие | retry: {max: 2, when: script_failure} |
| Несколько условий | when: [...] (массив) |
| Дубли условий/кодов | Сворачиваются |
Пример
Задача.Повтор.Повторы = 2;
Задача.Повтор.ДобавитьУсловие(УсловияПовтора.СбойСкрипта());
Задача.Повтор.ДобавитьКодВыхода(42);ОписаниеРелиза
Создание релиза из джобы (release). Доступ: Задача.Релиз
Поля
| Поле | Тип | YAML-ключ | Обязательное |
|---|---|---|---|
Тег | Строка | tag_name | да |
Описание | Строка | description | да |
СообщениеТега | Строка | tag_message | нет |
Имя | Строка | name | нет |
Реф | Строка | ref | нет |
ДатаВыхода | Строка | released_at | нет |
Вехи | Массив из Строка | milestones | нет |
Ссылки | Массив из Структура | assets.links | нет |
Методы
ДобавитьВеху(Веха)
ДобавитьСсылку(Имя, УРЛ)
Ссылка на ассет релиза.
Валидация
Заполнено что-то, но пустые Тег или Описание → исключение с именем задачи. Полностью пустой релиз → ключ не выводится.
Пример
Релиз.Релиз.Тег = "$CI_COMMIT_TAG";
Релиз.Релиз.Описание = "Что нового в $CI_COMMIT_TAG";
Релиз.Релиз.Имя = "Версия $CI_COMMIT_TAG";
Релиз.Релиз.ДобавитьСсылку("Дистрибутив", "https://example.com/distr.cf");ОписаниеСервиса
Сервис-контейнер джобы (services). Создание через фабрику задачи:
Сервис = Задача.НовыйСервис();Поля
| Поле | Тип | YAML-ключ |
|---|---|---|
Имя | Строка | name |
Алиас | Строка | alias |
Энтрипоинт | Массив из Строка | entrypoint |
Команда | Массив из Строка | command |
Переменные | Соответствие | variables |
Методы
ДобавитьПеременную(Имя, Значение)
Переменная окружения сервиса.
Пример
База = Задача.НовыйСервис();
База.Имя = "postgres:14";
База.Алиас = "db";
База.ДобавитьПеременную("POSTGRES_PASSWORD", "secret");YAML:
services:
- name: postgres:14
alias: db
variables:
POSTGRES_PASSWORD: secretОписаниеСтраниц
Публикация GitLab Pages (pages:publish). Доступ: Задача.Страницы
Работает для джобы с именем pages — особого имени в GitLab.
Поля
| Поле | Тип | YAML-ключ |
|---|---|---|
ПутьЭкспорта | Строка | pages.publish |
Методы
Публиковать(Путь)
Задаёт каталог публикации. Путь автоматически добавляется в artifacts:paths (GitLab 17.10+).
ПутьПубликации()
Возвращает заданный путь.
Валидации при генерации
- Джоба
pagesбез публикации и без артефактов → исключение (публикации не будет) - Джоба
pagesне в стадииdeploy→ исключение
Пример
Страницы = Фабрика.Новая();
Страницы.Наименование = "pages";
Страницы.Стадия = "deploy";
Страницы.Страницы.Публиковать("dist");
Страницы.Скрипты.Добавить("npx @11ty/eleventy --output=dist");YAML:
pages:
stage: deploy
script:
- npx @11ty/eleventy --output=dist
pages:
publish: dist
artifacts:
paths:
- distСкрипты
Модуль-фабрика команд для инструментов 1С-разработки. Каждая функция возвращает готовую строку команды для Скрипты.Добавить().
ЕДТ (1C:EDT CLI)
| Функция | Назначение |
|---|---|
КонвертацияЕДТВКонфигуратор(КаталогВоркспейса, КаталогЕДТ, КаталогКонфигуратор, ПамятьВГБ = 8) | Экспорт конфигурации из ЕДТ в формат конфигуратора |
ИмпортПроектаЕДТ(КаталогВоркспейса, КаталогЕДТ, ПамятьВГБ = 8) | Импорт проекта в workspace |
ВалидацияЕДТПоСпискуПроектов(КаталогВоркспейса, СписокПроектов, ФайлРезультата, ПамятьВГБ = 8, ТаймаутВСек = 3600) | Валидация по списку проектов |
ВалидацияЕДТПоСпискуКаталоговПроектов(...) | Валидация с импортом по каталогам |
vanessa-runner / vrunner
| Функция | vrunner-команда |
|---|---|
СозданиеБазы(СтрокаПодключения) | init-dev |
ЗагрузитьКонфигурациюИзФайлов(СтрокаПодключения, КаталогИсходников) | compile -c |
ЗагрузитьРасширениеИзФайлов(СтрокаПодключения, КаталогИсходников, ИмяРасширения) | compileext |
ОбновитьКонфигурациюБД(СтрокаПодключения) | updatedb |
СобратьКонфигурациюИзФайлов(КаталогИсходников, ПутьКФайлу) | compile |
ОбновитьБазуВРежимеПредприятия(СтрокаПодключения, ПутьДоОбработки) | run + обновление ИБ |
ЗапускТестовЯксЮнит(СтрокаПодключения, ФайлНастроек) | YAXUnit |
ЗапускТестовВА(СтрокаПодключения, ФайлПараметровВА, ПутьОбработкиВА, КореньПроекта) | Vanessa Automation |
Прочее
НастройкаФлаговРасширения(ПолныйПутьКБазе, ИмяРасширения)— ibcmd extension updateЛогЭхоЛинукс(Текст)— echo с таймстампом
Пример
Задача.Скрипты.Добавить(Скрипты.СозданиеБазы("/Fbuild/ib"));
Задача.Скрипты.Добавить(Скрипты.ЗагрузитьКонфигурациюИзФайлов("/Fbuild/ib", "build/src"));
Задача.Скрипты.Добавить(Скрипты.ОбновитьКонфигурациюБД("/Fbuild/ib"));СобытияПайплайна
Модуль-константа условий запуска джобы (when). Сахар: функции возвращают строковые значения, IDE показывает варианты при наборе.
| Метод | Значение | Смысл |
|---|---|---|
ПриУспехе() | on_success | При успехе предыдущих (дефолт) |
ПриНеудаче() | on_failure | Только при падении |
Всегда() | always | Всегда, независимо от результата |
РучнойЗапуск() | manual | По кнопке |
Отложенный() | delayed | С задержкой start_in |
Пример
Задача.Когда = СобытияПайплайна.РучнойЗапуск();Модуль содержит только when-константы. Константы стадий — на ОписаниеЗадачи (см. ДоВсех()/ПослеВсех()), условия повтора — в модуле УсловияПовтора.
УсловияПовтора
Модуль-константа условий повтора для retry.when. Полный набор допустимых значений GitLab (22 условия).
Основные
| Метод | Значение |
|---|---|
Всегда() | always |
СбойСкрипта() | script_failure |
СбойРаннера() | runner_system_failure |
СбойАПИ() | api_failure |
НеизвестныйСбой() | unknown_failure |
Прочие
ЗависшийИлиТаймаут(), НеПоддерживаемыйРаннер(), УстаршееРасписание(), ТаймаутВыполнения(), АрхивнаяДжоба(), НеВыполненыПредусловия(), СбойПланировщика(), СбойЦелостностиДанных() и новые из GitLab 19.1 (ОшибкаКонфигурацииРаннера(), ВнешняяЗависимостьРаннера(), РаннерПрерван() и др.) — полный список в исходнике модуля.
Допустимые()
Возвращает массив всех допустимых значений — используется для валидации ОписаниеПовтора.ДобавитьУсловие().
Пример
Задача.Повтор.ДобавитьУсловие(УсловияПовтора.СбойСкрипта());Недопустимое условие — исключение с перечнем допустимых.
ФабрикаЗадач
Реестр задач пайплайна. Создаёт описания задач и накапливает их для генератора.
Получение:
Фабрика = Поделка.НайтиЖелудь("ФабрикаЗадач");Новая()
Создаёт новое описание задачи, регистрирует его в реестре и возвращает.
Задача = Фабрика.Новая();Возвращаемое значение: ОписаниеЗадачи
Задачи()
Возвращает массив накопленных задач.
Все = Фабрика.Задачи();Возвращаемое значение: Массив из ОписаниеЗадачи
Очистить()
Очищает реестр задач (используется в тестах для изоляции сценариев).
