Skip to content

Публичный интерфейс библиотеки 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).

Справочные методы

  • Допустимые() — массив всех допустимых видов
  • ФорматыПокрытия() — массив допустимых форматов покрытия

Пример

bsl
Задача.Артефакты.ДобавитьОтчет(ВидыОтчетов.Юнит(), "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

Пример

bsl
Задача.Таймаут = Время.ВЧасы(2);
Деплой.Окружение.АвтоОстановка = Время.ВНедели(1);

ГенераторПайплайнаГитлаб

Собирает YAML пайплайна из накопленных задач и записывает в файл.

Получение:

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

СформироватьПайплайн(ПутьКФайлу)

Валидирует задачи и пишет YAML пайплайна.

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

Параметры:

  • ПутьКФайлу - Строка - путь к файлу результата

Валидации, выполняемые при генерации:

ПроверкаИсключение
needs ссылается на несуществующую джобуС перечнем доступных джоб
СтартоватьСразу + непустой НуждаетсяВзаимоисключающие настройки
Окружение заполнено без ИмяНельзя построить валидный environment
Окружение.Действие не из набораС перечнем допустимых
Окружение.ПриОстановке на несуществующую джобуПо образцу needs
Релиз заполнен без Тег/ОписаниеС именем задачи
Джоба pages без артефактов/публикацииНе опубликует ничего
Джоба pages не в стадии deployТребование GitLab
Параллельность: заданы и число, и матрицаВзаимоисключающие

Порядок топ-левел секций: defaultstagesvariablescoverage → джобы.

Пустые значения не выводятся в YAML.


Гитлаб

Модуль-помощник для работы с окружением GitLab и зарезервированными сущностями.

ПолучитьПеременнуюСредыГитлаб(Переменная)

Возвращает значение переменной среды GitLab. При локальном запуске (вне CI), если переменная не задана, возвращает её имя с префиксом $ — генерация пайплайна работает без окружения GitLab.

bsl
Версия = Гитлаб.ПолучитьПеременнуюСредыГитлаб("CI_COMMIT_TAG");
// В CI: реальное значение
// Локально: "$CI_COMMIT_TAG"

ИсточникСобытияПайплайна()

Значение CI_PIPELINE_SOURCE.

ЭтоМержРеквест()

Истина, если пайплайн запущен событием мерж-реквеста.

ЗарезервированныеСтадии()

Реестр зарезервированных стадий GitLab — единственное место их перечисления в библиотеке.

Возвращаемое значение: Соответствие, ключ → значение:

КлючЗначение
ДоВсех.pre
ПослеВсех.post

Генератор фильтрует эти стадии из stages по реестру; сахар Задача.ДоВсех()/ПослеВсех() берёт имена из него же. Новая зарезервированная стадия добавляется одной строкой в реестр.


ДействияОкружения

Модуль-константа действий для environment:action. Источник правды — именованные методы, набор Допустимые() наполняется из них.

Методы

МетодЗначениеСмысл
Запуск()startРазвёртывание (дефолт)
Подготовка()prepareПодготовить окружение без создания
Остановка()stopОстановить окружение
Проверка()verifyПроверить окружение
Доступ()accessТолько доступ

Допустимые()

Массив всех значений — используется для валидации в генераторе.

Пример

bsl
СтопДжоба.Окружение.Действие = ДействияОкружения.Остановка();

ЛокаторСтадийПайплайна

Загружает стадии пайплайна из .os-файлов каталога.

При инициализации поделки сканирует каталог (по умолчанию ./pipeline) и подключает каждый *.os-файл как сценарий. Имя файла становится именем сценария.

Настройка каталога

Каталог настраивается через &Деталька при создании (значение по умолчанию ./pipeline).


ОписаниеАртефактов

Артефакты джобы (artifacts). Доступ: Задача.Артефакты

Поля

ПолеТипYAML-ключ
ИмяСтрокаname
КогдаСтрокаwhen
ВремяХраненияСтрокаexpire_in
ПутиМассив из Строкаpaths
ИсключитьМассив из Строкаexclude
НеотслеживаемыеБулевоuntracked
ПубличныйБулевоpublic
ПоказыватьКакСтрокаexpose_as
ОтчетыСоответствиеreports

Методы

ДобавитьПуть(Путь)

Добавляет путь в артефакты.

ДобавитьИсключение(Путь)

Добавляет исключение (маску) из артефактов.

ДобавитьОтчет(Тип, Путь)

Добавляет отчёт по типу с валидацией типа. Тип берите из модуля ВидыОтчетов:

bsl
Задача.Артефакты.ДобавитьОтчет(ВидыОтчетов.Юнит(), "junit.xml");
Задача.Артефакты.ДобавитьОтчет(ВидыОтчетов.САСТ(), "gl-sast-report.json");

Недопустимый вид → исключение с перечнем допустимых.

ДобавитьОтчетПокрытия(Формат, Путь)

Отчёт покрытия coverage_report с валидацией формата (cobertura/jacoco/lcov/simplecov):

bsl
Задача.Артефакты.ДобавитьОтчетПокрытия(ВидыОтчетов.Кобертура(), "coverage.xml");

Пример

bsl
Артефакты = Задача.Артефакты;
Артефакты.Имя = "$CI_JOB_NAME-artifacts";
Артефакты.ВремяХранения = "1 week";
Артефакты.ДобавитьПуть("dist/");
Артефакты.ДобавитьИсключение("dist/*.tmp");
Артефакты.ДобавитьОтчет(ВидыОтчетов.Юнит(), "junit.xml");

ОписаниеЗадачи

Модель джобы пайплайна. Все поля экспортные, пустые значения не попадают в YAML.

Создание — только через фабрику:

bsl
Задача = Фабрика.Новая();

Поля

ПолеТип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 — после всех стадий.

Пример

bsl
Задача = Фабрика.Новая();
Задача.Наименование = "deploy-prod";
Задача.Стадия = "deploy";
Задача.ТегиРаннера.Добавить("prod");
Задача.Таймаут = "1h";
Задача.Прерываемый = Истина;
Задача.ГруппаРесурсов = "production";
Задача.ДобавитьПеременную("TARGET", "prod");
Задача.Нуждается.Добавить("build");
Задача.Скрипты.Добавить("make deploy");

ОписаниеКэша

Кэш джобы (cache). Доступ: Задача.Кэш

Поля

ПолеТипYAML-ключ
ПутиМассив из Строкаpaths
ПрефиксКлючаСтрокапрефикс key
КлючПоФайламМассив из Строкаkey: files
ПолитикаСтрокаpolicy
НеотслеживаемыеБулевоuntracked

Методы

ДобавитьПуть(Путь)

Добавляет путь в кэш.

ДобавитьКлючПоФайлам(Файл)

Добавляет файл в генерацию ключа.

Пример

bsl
Задача.Кэш.ДобавитьПуть("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

ДопустимыеПолитики()

Возвращает массив допустимых политик.

Пример

bsl
Задача.Образ.Имя = "docker:latest";
Задача.Образ.Всегда();

ОписаниеОкружения

Деплой-окружение джобы (environment). Доступ: Задача.Окружение

Поля

ПолеТипYAML-ключ
ИмяСтрокаname
УРЛСтрокаurl
ПриОстановкеСтрокаon_stop (имя стоп-джобы)
ДействиеСтрокаaction (см. модуль ДействияОкружения)
АвтоОстановкаСтрокаauto_stop_in, например 1 week

Валидации при генерации

  • Недопустимое действие → исключение с перечнем допустимых (см. ДействияОкружения.Допустимые())
  • Заполнено что-то, но Имя пустое → исключение (url без name невалиден)
  • ПриОстановке ссылается на несуществующую джобу → исключение

Пустое окружение → ключ не выводится.

Пример (review-app паттерн)

bsl
// Джоба развёртывания
Деплой.Окружение.Имя = "review/$CI_COMMIT_REF_SLUG";
Деплой.Окружение.УРЛ = "https://$CI_ENVIRONMENT_SLUG.example.com";
Деплой.Окружение.ПриОстановке = "stop-review";
Деплой.Окружение.АвтоОстановка = "1 week";

// Стоп-джоба
Стоп.Окружение.Имя = "review/$CI_COMMIT_REF_SLUG";
Стоп.Окружение.Действие = ДействияОкружения.Остановка();

ОписаниеПайплайна

Топ-левел настройки пайплайна. Получение:

bsl
ОписаниеПайплайна = Поделка.НайтиЖелудь("ОписаниеПайплайна");

Поля

ПолеТипYAML-ключ
ПередСкриптыМассив из Строкаdefault.before_script
ПослеСкриптыМассив из Строкаdefault.after_script
ПеременныеСоответствиеvariables
ШаблонПокрытияСтрокаcoverage
ПравилаМассивзарезервировано для workflow

Методы

ДобавитьПередСкрипт(Команда)

Команда глобального before_script.

ДобавитьПослеСкрипт(Команда)

Команда глобального after_script.

ДобавитьПеременную(Имя, Значение)

Глобальная переменная пайплайна (выводится в корень variables).

Пример

bsl
ОписаниеПайплайна.ДобавитьПеременную("REGISTRY", "registry.example.com");
ОписаниеПайплайна.ШаблонПокрытия = "/^Total.*?(\d+\s*)$/";
ОписаниеПайплайна.ДобавитьПередСкрипт("opm install -l");

ОписаниеПараллельности

Параллельный запуск джобы (parallel). Доступ: Задача.Параллельность

Поля

ПолеТипYAML-ключ
КоличествоЧислоparallel (число копий)
МатрицаМассив из Соответствиеparallel.matrix

Методы

ДобавитьРядМатрицы(ИмяПеременной, Значения)

Независимый ряд матрицы с одной переменной:

bsl
ОС = Новый Массив();
ОС.Добавить("ubuntu");
ОС.Добавить("windows");
Задача.Параллельность.ДобавитьРядМатрицы("OS", ОС);

ДобавитьРяд(Ряд)

Ряд из соответствия — комбинации всех переменных ряда перемножаются (декартово произведение):

bsl
Ряд = Новый Соответствие();
Ряд.Вставить("OS", ОС);
Ряд.Вставить("VERSION", Версии);
Задача.Параллельность.ДобавитьРяд(Ряд);

Валидация

Число и матрица взаимоисключающие — одновременное задание роняет генерацию.

Вывод

yaml
# Число
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

Методы

ДобавитьУсловие(Условие)

Добавляет условие повтора с валидацией. Условия берите из модуля УсловияПовтора:

bsl
Задача.Повтор.ДобавитьУсловие(УсловияПовтора.СбойСкрипта());
Задача.Повтор.ДобавитьУсловие(УсловияПовтора.СбойРаннера());

ДобавитьКодВыхода(Код)

Код выхода, при котором повторять:

bsl
Задача.Повтор.ДобавитьКодВыхода(42);

Вывод

ЗаданоYAML
Только числоretry: 2
Одно условиеretry: {max: 2, when: script_failure}
Несколько условийwhen: [...] (массив)
Дубли условий/кодовСворачиваются

Пример

bsl
Задача.Повтор.Повторы = 2;
Задача.Повтор.ДобавитьУсловие(УсловияПовтора.СбойСкрипта());
Задача.Повтор.ДобавитьКодВыхода(42);

ОписаниеРелиза

Создание релиза из джобы (release). Доступ: Задача.Релиз

Поля

ПолеТипYAML-ключОбязательное
ТегСтрокаtag_nameда
ОписаниеСтрокаdescriptionда
СообщениеТегаСтрокаtag_messageнет
ИмяСтрокаnameнет
РефСтрокаrefнет
ДатаВыходаСтрокаreleased_atнет
ВехиМассив из Строкаmilestonesнет
СсылкиМассив из Структураassets.linksнет

Методы

ДобавитьВеху(Веха)

ДобавитьСсылку(Имя, УРЛ)

Ссылка на ассет релиза.

Валидация

Заполнено что-то, но пустые Тег или Описание → исключение с именем задачи. Полностью пустой релиз → ключ не выводится.

Пример

bsl
Релиз.Релиз.Тег = "$CI_COMMIT_TAG";
Релиз.Релиз.Описание = "Что нового в $CI_COMMIT_TAG";
Релиз.Релиз.Имя = "Версия $CI_COMMIT_TAG";
Релиз.Релиз.ДобавитьСсылку("Дистрибутив", "https://example.com/distr.cf");

ОписаниеСервиса

Сервис-контейнер джобы (services). Создание через фабрику задачи:

bsl
Сервис = Задача.НовыйСервис();

Поля

ПолеТипYAML-ключ
ИмяСтрокаname
АлиасСтрокаalias
ЭнтрипоинтМассив из Строкаentrypoint
КомандаМассив из Строкаcommand
ПеременныеСоответствиеvariables

Методы

ДобавитьПеременную(Имя, Значение)

Переменная окружения сервиса.

Пример

bsl
База = Задача.НовыйСервис();
База.Имя = "postgres:14";
База.Алиас = "db";
База.ДобавитьПеременную("POSTGRES_PASSWORD", "secret");

YAML:

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 → исключение

Пример

bsl
Страницы = Фабрика.Новая();
Страницы.Наименование = "pages";
Страницы.Стадия = "deploy";
Страницы.Страницы.Публиковать("dist");
Страницы.Скрипты.Добавить("npx @11ty/eleventy --output=dist");

YAML:

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 с таймстампом

Пример

bsl
Задача.Скрипты.Добавить(Скрипты.СозданиеБазы("/Fbuild/ib"));
Задача.Скрипты.Добавить(Скрипты.ЗагрузитьКонфигурациюИзФайлов("/Fbuild/ib", "build/src"));
Задача.Скрипты.Добавить(Скрипты.ОбновитьКонфигурациюБД("/Fbuild/ib"));

СобытияПайплайна

Модуль-константа условий запуска джобы (when). Сахар: функции возвращают строковые значения, IDE показывает варианты при наборе.

МетодЗначениеСмысл
ПриУспехе()on_successПри успехе предыдущих (дефолт)
ПриНеудаче()on_failureТолько при падении
Всегда()alwaysВсегда, независимо от результата
РучнойЗапуск()manualПо кнопке
Отложенный()delayedС задержкой start_in

Пример

bsl
Задача.Когда = СобытияПайплайна.РучнойЗапуск();

Модуль содержит только when-константы. Константы стадий — на ОписаниеЗадачи (см. ДоВсех()/ПослеВсех()), условия повтора — в модуле УсловияПовтора.


УсловияПовтора

Модуль-константа условий повтора для retry.when. Полный набор допустимых значений GitLab (22 условия).

Основные

МетодЗначение
Всегда()always
СбойСкрипта()script_failure
СбойРаннера()runner_system_failure
СбойАПИ()api_failure
НеизвестныйСбой()unknown_failure

Прочие

ЗависшийИлиТаймаут(), НеПоддерживаемыйРаннер(), УстаршееРасписание(), ТаймаутВыполнения(), АрхивнаяДжоба(), НеВыполненыПредусловия(), СбойПланировщика(), СбойЦелостностиДанных() и новые из GitLab 19.1 (ОшибкаКонфигурацииРаннера(), ВнешняяЗависимостьРаннера(), РаннерПрерван() и др.) — полный список в исходнике модуля.

Допустимые()

Возвращает массив всех допустимых значений — используется для валидации ОписаниеПовтора.ДобавитьУсловие().

Пример

bsl
Задача.Повтор.ДобавитьУсловие(УсловияПовтора.СбойСкрипта());

Недопустимое условие — исключение с перечнем допустимых.


ФабрикаЗадач

Реестр задач пайплайна. Создаёт описания задач и накапливает их для генератора.

Получение:

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

Новая()

Создаёт новое описание задачи, регистрирует его в реестре и возвращает.

bsl
Задача = Фабрика.Новая();

Возвращаемое значение: ОписаниеЗадачи

Задачи()

Возвращает массив накопленных задач.

bsl
Все = Фабрика.Задачи();

Возвращаемое значение: Массив из ОписаниеЗадачи

Очистить()

Очищает реестр задач (используется в тестах для изоляции сценариев).