You've already forked devscripts
mirror of
https://github.com/DoublesunRUS/devscripts.git
synced 2026-06-11 22:46:51 +02:00
Интеграция / Развертывание
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
@tree
|
||||
|
||||
#report.story=Пользователь "%ПредставлениеПользователя%"
|
||||
Функциональность: Тесты под пользователем "%ПредставлениеПользователя%"
|
||||
Функциональность: %Фича% - "%ПредставлениеПользователя%"
|
||||
|
||||
Контекст:
|
||||
Дано я подключаю TestClient "%ПредставлениеПользователя%" логин "%ИмяПользователя%" пароль "%ПарольПользователя%"
|
||||
|
||||
+109
-21
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user