1
0
mirror of https://github.com/DoublesunRUS/devscripts.git synced 2026-06-11 22:46:51 +02:00

Интеграция / Развертывание

This commit is contained in:
Капралов Александр
2021-08-07 16:06:32 +03:00
parent 9d3a324cb1
commit a97b1ce90f
2 changed files with 110 additions and 22 deletions
+1 -1
View File
@@ -3,7 +3,7 @@
@tree
#report.story=Пользователь "%ПредставлениеПользователя%"
Функциональность: Тесты под пользователем "%ПредставлениеПользователя%"
Функциональность: %Фича% - "%ПредставлениеПользователя%"
Контекст:
Дано я подключаю TestClient "%ПредставлениеПользователя%" логин "%ИмяПользователя%" пароль "%ПарольПользователя%"
+109 -21
View File
@@ -259,15 +259,15 @@
DumpExt(файлРасширения, репозиторий.Проект, строкаСоединения, исполняемыйФайлПлатформы)
;
пер списокДвоичныхФайлов = новый Массив()
пер списокФайловСсылок = новый Массив()
знч каталогСборкиПроекта = новый Файл(CI_PROJECT_DIR)
для файл из Файлы.Найти(ИМЯ_КАТАЛОГА_ПРИКЛАДНОЙ_СБОРКИ)
знч путьВнутриСборки = файл.Путь.Удалить(каталогСборкиПроекта.Путь)
списокДвоичныхФайлов.Добавить(путьВнутриСборки)
списокФайловСсылок.Добавить(новый ОписаниеФайлаСсылкиАссетов(файл.Имя, путьВнутриСборки))
;
знч имяФайлаАссетов = "%ИМЯ_КАТАЛОГА_СЛУЖЕБНОЙ_СБОРКИ/assets_bin.json"
Консоль.Записать("ЗаписатьОписаниеАссетов: %имяФайлаАссетов %CI_PROJECT_PATH %CI_JOB_ID")
ЗаписатьОписаниеАссетов(имяФайлаАссетов, CI_PROJECT_PATH, CI_JOB_ID, списокДвоичныхФайлов)
ЗаписатьОписаниеАссетов(имяФайлаАссетов, CI_PROJECT_PATH, CI_JOB_ID, списокФайловСсылок)
знч логФайлыРабочейОбласти = "%WP/.metadata/"
пер настройкиПоиска = новый НастройкиПоискаФайлов()
@@ -483,15 +483,15 @@
DumpExt(файлРасширения, репозиторий.Проект, строкаСоединения, исполняемыйФайлПлатформы)
;
пер списокДвоичныхФайлов = новый Массив()
пер списокФайловСсылок = новый Массив()
знч каталогСборкиПроекта = новый Файл(CI_PROJECT_DIR)
для файл из Файлы.Найти(ИМЯ_КАТАЛОГА_ПРИКЛАДНОЙ_СБОРКИ)
знч путьВнутриСборки = файл.Путь.Удалить(каталогСборкиПроекта.Путь)
списокДвоичныхФайлов.Добавить(путьВнутриСборки)
списокФайловСсылок.Добавить(новый ОписаниеФайлаСсылкиАссетов(файл.Имя, путьВнутриСборки))
;
знч имяФайлаАссетов = "%ИМЯ_КАТАЛОГА_СЛУЖЕБНОЙ_СБОРКИ/assets_bin.json"
Консоль.Записать("ЗаписатьОписаниеАссетов: %имяФайлаАссетов %CI_PROJECT_PATH %CI_JOB_ID")
ЗаписатьОписаниеАссетов(имяФайлаАссетов, CI_PROJECT_PATH, CI_JOB_ID, списокДвоичныхФайлов)
ЗаписатьОписаниеАссетов(имяФайлаАссетов, CI_PROJECT_PATH, CI_JOB_ID, списокФайловСсылок)
знч логФайлыРабочейОбласти = "%WP/.metadata/"
пер настройкиПоиска = новый НастройкиПоискаФайлов()
@@ -929,6 +929,7 @@
исп потокФайлаАвтофичи = файлАвтофичи.ОткрытьПотокЧтения()
пер чтениеФайлаАвтофичи = новый ЧтениеДанных(потокФайлаАвтофичи)
// TODO: Отладка
пока не чтениеФайлаАвтофичи.ЧтениеЗавершено()
знч строкаФайла = чтениеФайлаАвтофичи.ПрочитатьСтроку("cp1251")
если строкаФайла.Пусто()
@@ -957,6 +958,7 @@
для пользователь из настройкиАвтофич.Шаблоны.Пользователи
для автофича из автофичи
пер текстФичи = текстШаблонаШапки
текстФичи = текстФичи.Заменить("\%Фича\%", автофича.Ключ)
текстФичи = текстФичи.Заменить("\%ПредставлениеПользователя\%", пользователь.Представление)
текстФичи = текстФичи.Заменить("\%ИмяПользователя\%", пользователь.Имя)
текстФичи = текстФичи.Заменить("\%ПарольПользователя\%", пользователь.Пароль)
@@ -1259,11 +1261,43 @@
AllureGenerate(настройкиАвтофич)
;
пер списокДвоичныхФайлов = новый Массив()
списокДвоичныхФайлов.Добавить("/public/index.html")
пер списокФайловСсылок = новый Массив()
пер тестовВсего = 0
пер тестовНеПрошло = 0
пер тестовПропущено = 0
знч полныйПутьРезультатовТестов = "%CI_PROJECT_DIR/%ИМЯ_КАТАЛОГА_РЕЗУЛЬТАТОВ_ТЕСТОВ/junit/"
пер настройкиПоискаФайлов = новый НастройкиПоискаФайлов()
настройкиПоискаФайлов.ИмяСодержит(".xml")
знч найденныеФайлы = Файлы.Найти(полныйПутьРезультатовТестов, настройкиПоискаФайлов)
пер индексТеста = 1
для найденныйФайл из найденныеФайлы
если не найденныйФайл.Имя.НачинаетсяС("junit")
продолжить
;
знч тестыJunit = ПрочитатьОшибкиВФорматеJUnit(найденныйФайл.Путь)
для testSuite из тестыJunit.testSuites
тестовВсего += testSuite.tests
тестовНеПрошло += testSuite.failures
тестовПропущено += testSuite.skipped
если testSuite.errors == 0 и testSuite.failures == 0
продолжить
;
знч представлениеТестов = "Тесты %{testSuite.name}: всего %{testSuite.tests}, не прошло %{testSuite.failures}, пропущено %{testSuite.skipped}"
знч ссылкаТеста = "/public/index.html#behaviors/%индексТеста"
списокФайловСсылок.Добавить(новый ОписаниеФайлаСсылкиАссетов(представлениеТестов, ссылкаТеста))
индексТеста += 1
;
;
списокФайловСсылок.Вставить(0, новый ОписаниеФайлаСсылкиАссетов("Все тесты: всего %тестовВсего, не прошло %тестовНеПрошло, пропущено %тестовПропущено", "/public/index.html"))
знч имяФайлаАссетов = "%ИМЯ_КАТАЛОГА_СЛУЖЕБНОЙ_СБОРКИ/assets_pages.json"
Консоль.Записать("ЗаписатьОписаниеАссетов: %имяФайлаАссетов %CI_PROJECT_PATH %CI_JOB_ID")
ЗаписатьОписаниеАссетов(имяФайлаАссетов, CI_PROJECT_PATH, CI_JOB_ID, списокДвоичныхФайлов)
ЗаписатьОписаниеАссетов(имяФайлаАссетов, CI_PROJECT_PATH, CI_JOB_ID, списокФайловСсылок)
;
метод ОпубликоватьРелиз()
@@ -1282,19 +1316,19 @@
пер ссылки = новый Массив()
знч описаниеАссетовBin = ПрочитатьОписаниеАссетов("%ИМЯ_КАТАЛОГА_СЛУЖЕБНОЙ_СБОРКИ/assets_bin.json")
для имяФайла из описаниеАссетовBin.списокДвоичныхФайлов
знч файлДляУрл = имяФайла.Заменить("\\", "/")
знч файл = новый Файл(имяФайла)
для данныеФайла из описаниеАссетовBin.списокФайловСсылок
знч файлДляУрл = данныеФайла.путь.Заменить("\\", "/")
знч файл = новый Файл(данныеФайла.путь)
знч урлАссерта = "https://%CI_SERVER_HOST/%{описаниеАссетовBin.имяПроекта}/-/jobs/%{описаниеАссетовBin.идЗадания}/artifacts/raw%файлДляУрл"
знч ассерт = новый Releases_Create_Assets_Link_Data(файл.Имя, урлАссерта)
знч ассерт = новый Releases_Create_Assets_Link_Data(данныеФайла.имя, урлАссерта)
ссылки.Добавить(ассерт)
;
знч описаниеАссетовPages = ПрочитатьОписаниеАссетов("%ИМЯ_КАТАЛОГА_СЛУЖЕБНОЙ_СБОРКИ/assets_pages.json")
для имяФайла из описаниеАссетовPages.списокДвоичныхФайлов
знч файлДляУрл = имяФайла.Заменить("\\", "/")
знч файл = новый Файл(имяФайла)
для данныеФайла из описаниеАссетовPages.списокФайловСсылок
знч файлДляУрл = данныеФайла.путь.Заменить("\\", "/")
знч файл = новый Файл(данныеФайла.путь)
знч урлАссерта = "https://%CI_SERVER_HOST/%{описаниеАссетовPages.имяПроекта}/-/jobs/%{описаниеАссетовPages.идЗадания}/artifacts/file%файлДляУрл"
знч ассерт = новый Releases_Create_Assets_Link_Data("Allure Report", урлАссерта)
знч ассерт = новый Releases_Create_Assets_Link_Data(данныеФайла.имя, урлАссерта)
ссылки.Добавить(ассерт)
;
@@ -2195,6 +2229,46 @@
;
структура ОписаниеJunitTestSuites
пер testSuites: Массив
;
структура ОписаниеJunitTestSuite
пер name: Строка
пер tests: Число
пер errors: Число
пер skipped: Число
пер failures: Число
пер time: Число
;
метод ПрочитатьОшибкиВФорматеJUnit(файлJUnit: Строка): ОписаниеJunitTestSuites
знч файл = новый Файл(файлJUnit)
исп поток = файл.ОткрытьПотокЧтения()
пер testSuites = новый Массив()
пер потокXml = новый ЧтениеXml(поток)
пока потокXml.Следующий()
если потокXml.ВидУзла != ВидУзлаXml.НачалоЭлемента
продолжить
;
если потокXml.Имя == "testsuite"
знч name = потокXml.ЗначениеАтрибута("name")
знч tests = Число(потокXml.ЗначениеАтрибута("tests"))
знч errors = Число(потокXml.ЗначениеАтрибута("errors"))
знч skipped = Число(потокXml.ЗначениеАтрибута("skipped"))
знч failures = Число(потокXml.ЗначениеАтрибута("failures"))
знч time = Число(потокXml.ЗначениеАтрибута("time"))
пер testSuite = новый ОписаниеJunitTestSuite(name, tests, errors, skipped, failures, time)
testSuites.Добавить(testSuite)
;
;
пер ошибкиJunit = новый ОписаниеJunitTestSuites(testSuites)
возврат ошибкиJunit
;
метод ОшибкиВФорматеSonarCube(файлРезультатовВалидации: Строка): SonarqubeGenericFormat
знч файл = новый Файл(файлРезультатовВалидации)
исп поток = файл.ОткрытьПотокЧтения()
@@ -2485,10 +2559,15 @@
конструктор(name, url)
;
структура ОписаниеФайлаСсылкиАссетов
пер имя: Строка
пер путь: Строка
;
структура ОписаниеАссетов
пер имяПроекта: Строка
пер идЗадания: Строка
пер списокДвоичныхФайлов: Массив
пер списокФайловСсылок: Массив
;
@@ -2685,8 +2764,8 @@
возврат новый ДатаВремя(релизы[0]["created_at"].Подстрока(0, 19))
;
метод ЗаписатьОписаниеАссетов(файлОписанияАссертов: Строка, имяПроекта: Строка, идЗадания: Строка, списокДвоичныхФайлов: Массив)
знч описаниеАссетов = новый ОписаниеАссетов(имяПроекта, идЗадания, списокДвоичныхФайлов)
метод ЗаписатьОписаниеАссетов(файлОписанияАссертов: Строка, имяПроекта: Строка, идЗадания: Строка, списокФайловСсылок: Массив)
знч описаниеАссетов = новый ОписаниеАссетов(имяПроекта, идЗадания, списокФайловСсылок)
знч файлПараметров = новый Файл(файлОписанияАссертов)
исп поток = файлПараметров.ОткрытьПотокЗаписи()
@@ -2697,7 +2776,16 @@
знч файл = новый Файл(файлОписанияАссертов)
исп поток = файл.ОткрытьПотокЧтения()
возврат СериализацияJson.ПрочитатьОбъект(поток, Тип(ОписаниеАссетов)) как ОписаниеАссетов
пер описаниеАссетов = СериализацияJson.ПрочитатьОбъект(поток, Тип(ОписаниеАссетов)) как ОписаниеАссетов
пер файлыСсылки = новый Массив()
для файлСсылка из описаниеАссетов.списокФайловСсылок
знч описаниеФайлаСсылки = новый ОписаниеФайлаСсылкиАссетов(файлСсылка["имя"], файлСсылка["путь"])
файлыСсылки.Добавить(описаниеФайлаСсылки)
;
описаниеАссетов.списокФайловСсылок = файлыСсылки
возврат описаниеАссетов
;
метод Commits_List_Data_НастройкиЗаписиJson(данные: Commits_List_Data): НастройкиЗаписиОбъектовJson