Skip to content

Commit

Permalink
feat: добавлено динамическое составление stages при генерации (#19)
Browse files Browse the repository at this point in the history
  • Loading branch information
Karlo Ivan committed May 11, 2024
1 parent 22d4b90 commit 387cff5
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 8 deletions.
47 changes: 46 additions & 1 deletion src/Классы/КомандаGenerateConfig.os
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@

Лог.Информация("Генерация сборочной линии...");

Pipeline = ТекстЭтапа(КаталогШаблонов, "stages.yml");
Pipeline = "";

Pipeline = Pipeline + ТекстЭтапа(КаталогШаблонов, "common.yml");
Pipeline = Pipeline + ТекстЭтапа(КаталогШаблонов, "schedules.yml");
Expand All @@ -45,6 +45,8 @@

Pipeline = Pipeline + ТекстЭтапа(КаталогШаблонов, ".post.yml");

СоставитьПланЭтапов(Pipeline, КаталогШаблонов);

ФС.ОбеспечитьКаталог(КаталогСборки);

ВыходнойФайл = ОбъединитьПути(КаталогСборки, "generate-config.yml");
Expand All @@ -59,6 +61,14 @@

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

// Прочитать шаблон и добавить к общему тексту Pipeline
//
// Параметры:
// Каталог - Строка - Путь к каталогу шаблонов с шагами pipeline
// ИмяФайла - Строка - Имя файла шаблона из каталога с шаблонами
//
Функция ТекстЭтапа(Каталог, ИмяФайла)

ПутьКФайлу = ОбъединитьПути(Каталог, ИмяФайла);
Expand Down Expand Up @@ -93,5 +103,40 @@

КонецПроцедуры

// Составить план этапов и поместить его вначале
//
// Параметры:
// Pipeline - Строка - Инструкция для исполнения в gitlab pipeline
// КаталогШаблонов - Строка - Путь к каталогу шаблонов с шагами pipeline
//
Процедура СоставитьПланЭтапов(Pipeline, КаталогШаблонов)

Массив = Новый Массив;

РегулярноеВыражение = Новый РегулярноеВыражение("stage:[\s]?[\s]?[\s]?(\S+)");
РегулярноеВыражение.Многострочный = Истина;
Совпадения = РегулярноеВыражение.НайтиСовпадения(Pipeline);

Для Каждого Совпадение Из Совпадения Цикл
НаименованиеЭтапа = Совпадение.Группы[1].Значение;
Если СтрНачинаетсяС(НаименованиеЭтапа, ".") Тогда
Продолжить;
КонецЕсли;
Если Массив.Найти(НаименованиеЭтапа) = Неопределено Тогда
Массив.Добавить(НаименованиеЭтапа);
КонецЕсли;
КонецЦикла;

СтрокаСШагами = СтрШаблон("stages:%1", Символы.ПС);
Для Каждого ЭлементМассива Из Массив Цикл
СтрокаСШагами = СтрокаСШагами + СтрШаблон("%1 - %2%3", " ", ЭлементМассива, Символы.ПС);
КонецЦикла;

Pipeline = СтрокаСШагами + Pipeline;

КонецПроцедуры

#КонецОбласти

КаталогШаблонов = ПараметрыПриложения.КаталогШаблоновCI();
КаталогСборки = ПараметрыПриложения.КаталогСборки();
7 changes: 0 additions & 7 deletions tools/CI/templates/stages.yml

This file was deleted.

0 comments on commit 387cff5

Please sign in to comment.