diff --git a/Скрипты/1cicd.sbsl b/Скрипты/1cicd.sbsl index 8fd2f73..8f2fa17 100644 --- a/Скрипты/1cicd.sbsl +++ b/Скрипты/1cicd.sbsl @@ -44,9 +44,6 @@ ; метод СобратьПоследнийРелиз() - знч SCRIPTS = СредаИсполнения.ПолучитьПеременную("SCRIPTS") - знч настройки = ПрочитатьФайлНастроек("%SCRIPTS/../GitLab-CI") - знч WP = СредаИсполнения.ПолучитьПеременную("WP") знч CI_JOB_ID = СредаИсполнения.ПолучитьПеременную("CI_JOB_ID") @@ -54,36 +51,41 @@ знч CI_PROJECT_DIR = СредаИсполнения.ПолучитьПеременную("CI_PROJECT_DIR") знч CI_PROJECT_ID = СредаИсполнения.ПолучитьПеременную("CI_PROJECT_ID") знч CI_PROJECT_PATH = СредаИсполнения.ПолучитьПеременную("CI_PROJECT_PATH") - знч CI_PROJECT_ROOT_NAMESPACE = СредаИсполнения.ПолучитьПеременную("CI_PROJECT_ROOT_NAMESPACE") + знч CI_PROJECT_NAMESPACE = СредаИсполнения.ПолучитьПеременную("CI_PROJECT_NAMESPACE") знч CI_SERVER_HOST = СредаИсполнения.ПолучитьПеременную("CI_SERVER_HOST") знч RELEASES_TOKEN = СредаИсполнения.ПолучитьПеременную("RELEASES_TOKEN") + пер ошибкиТокенов = "" если RELEASES_TOKEN.Пусто() - знч текстОшибки = "В переменную RELEASES_TOKEN необходимо поместить api token репозитория Релизов." - выбросить новый ИсключениеНедопустимоеСостояние(текстОшибки) + ошибкиТокенов += "В переменную RELEASES_TOKEN необходимо поместить api token репозитория Релизов." + Символы + .НоваяСтрока ; + знч настройки = ПрочитатьФайлНастроек("%CI_PROJECT_DIR") + если СредаИсполнения.ПолучитьПеременную(настройки.Конфигурация.ПеременнаяТокена).Пусто() - знч текстОшибки = "В переменную %{настройки.Конфигурация - .ПеременнаяТокена} необходимо поместить read api token репозитория %{настройки.Конфигурация.Имя}." - выбросить новый ИсключениеНедопустимоеСостояние(текстОшибки) + ошибкиТокенов += "В переменную %{настройки.Конфигурация + .ПеременнаяТокена} необходимо поместить read api token репозитория %{настройки.Конфигурация.Имя}." + Символы + .НоваяСтрока ; для репозиторийРасширения из настройки.ПрикладныеРасширения если СредаИсполнения.ПолучитьПеременную(репозиторийРасширения.ПеременнаяТокена).Пусто() - знч текстОшибки = "В переменную %{репозиторийРасширения.ПеременнаяТокена} необходимо поместить read api token репозитория %{репозиторийРасширения - .Имя}." - выбросить новый ИсключениеНедопустимоеСостояние(текстОшибки) + ошибкиТокенов += "В переменную %{репозиторийРасширения.ПеременнаяТокена} необходимо поместить read api token репозитория %{репозиторийРасширения + .Имя}." + Символы.НоваяСтрока ; ; для репозиторийРасширения из настройки.ТестовыеРасширения если СредаИсполнения.ПолучитьПеременную(репозиторийРасширения.ПеременнаяТокена).Пусто() - знч текстОшибки = "В переменную %{репозиторийРасширения.ПеременнаяТокена} необходимо поместить read api token репозитория %{репозиторийРасширения - .Имя}." - выбросить новый ИсключениеНедопустимоеСостояние(текстОшибки) + ошибкиТокенов += "В переменную %{репозиторийРасширения.ПеременнаяТокена} необходимо поместить read api token репозитория %{репозиторийРасширения + .Имя}." + Символы.НоваяСтрока ; ; + если не ошибкиТокенов.Пусто() + выбросить новый ИсключениеНедопустимоеСостояние(ошибкиТокенов) + ; + знч полныйПутьПрикладнойСборки = "%CI_PROJECT_DIR/%ИМЯ_КАТАЛОГА_ПРИКЛАДНОЙ_СБОРКИ" знч полныйПутьТестовойСборки = "%CI_PROJECT_DIR/%ИМЯ_КАТАЛОГА_ТЕСТОВОЙ_СБОРКИ" @@ -98,7 +100,7 @@ Файлы.СоздатьКаталог(полныйПутьСлужебнойСборки) знч адресРепозиторияКонфигурации = - "https://gitlab-ci-token:%CI_JOB_TOKEN@%CI_SERVER_HOST/%CI_PROJECT_ROOT_NAMESPACE/%{настройки.Конфигурация + "https://gitlab-ci-token:%CI_JOB_TOKEN@%CI_SERVER_HOST/%CI_PROJECT_NAMESPACE/%{настройки.Конфигурация .Имя}.git" Консоль.Записать("Git_Clone: %адресРепозиторияКонфигурации %{настройки.Конфигурация.Ветка}") Git_Clone(адресРепозиторияКонфигурации, настройки.Конфигурация.Ветка) @@ -223,11 +225,14 @@ для репозиторий из репозиторииДляПересборки знч адресРепозитория = - "https://gitlab-ci-token:%CI_JOB_TOKEN@%CI_SERVER_HOST/%CI_PROJECT_ROOT_NAMESPACE/%{репозиторий.Имя}.git" + "https://gitlab-ci-token:%CI_JOB_TOKEN@%CI_SERVER_HOST/%CI_PROJECT_NAMESPACE/%{репозиторий.Имя}.git" Консоль.Записать("Git_Clone: %адресРепозитория %{репозиторий.Ветка}") Git_Clone(адресРепозитория, репозиторий.Ветка) - знч путьРасширенияЕДТ = "%CI_PROJECT_DIR/%{репозиторий.Имя}/%{репозиторий.Проект}" + пер путьРасширенияЕДТ = "%CI_PROJECT_DIR/%{репозиторий.Имя}/%{репозиторий.Проект}" + если не (новый Файл(путьРасширенияЕДТ)).Существует() + путьРасширенияЕДТ = "%CI_PROJECT_DIR/%{репозиторий.Имя}/%{настройки.Конфигурация.Проект}.%{репозиторий.Проект}" + ; знч путьРасширенияПлатформы = "%CI_PROJECT_DIR/temp/src_%{репозиторий.Имя}" Консоль.Записать("WorkspaceExport: %путьРасширенияЕДТ %путьРасширенияПлатформы %WP") WorkspaceExport(путьРасширенияЕДТ, путьРасширенияПлатформы, WP, ВЕРСИЯ_EDT) @@ -260,21 +265,25 @@ ; метод ПротестироватьКод() - знч SCRIPTS = СредаИсполнения.ПолучитьПеременную("SCRIPTS") - знч настройки = ПрочитатьФайлНастроек("%SCRIPTS/../GitLab-CI") - знч WP = СредаИсполнения.ПолучитьПеременную("WP") знч CI_JOB_TOKEN = СредаИсполнения.ПолучитьПеременную("CI_JOB_TOKEN") знч CI_PROJECT_DIR = СредаИсполнения.ПолучитьПеременную("CI_PROJECT_DIR") - знч CI_PROJECT_ROOT_NAMESPACE = СредаИсполнения.ПолучитьПеременную("CI_PROJECT_ROOT_NAMESPACE") + знч CI_PROJECT_NAMESPACE = СредаИсполнения.ПолучитьПеременную("CI_PROJECT_NAMESPACE") знч CI_SERVER_HOST = СредаИсполнения.ПолучитьПеременную("CI_SERVER_HOST") знч SONARQUBE_TOKEN = СредаИсполнения.ПолучитьПеременную("SONARQUBE_TOKEN") - если СредаИсполнения.ПолучитьПеременную("SONARQUBE_TOKEN").Пусто() - знч текстОшибки = "В переменную SONARQUBE_TOKEN необходимо поместить token SonarQube." - выбросить новый ИсключениеНедопустимоеСостояние(текстОшибки) + знч настройки = ПрочитатьФайлНастроек("%CI_PROJECT_DIR") + + пер ошибкиТокенов = "" + + если не настройки.СерверSonarQube.Пусто() и СредаИсполнения.ПолучитьПеременную("SONARQUBE_TOKEN").Пусто() + ошибкиТокенов += "В переменную SONARQUBE_TOKEN необходимо поместить token SonarQube." + Символы.НоваяСтрока + ; + + если не ошибкиТокенов.Пусто() + выбросить новый ИсключениеНедопустимоеСостояние(ошибкиТокенов) ; знч полныйПутьРезультатовТестов = "%CI_PROJECT_DIR/%ИМЯ_КАТАЛОГА_РЕЗУЛЬТАТОВ_ТЕСТОВ" @@ -283,7 +292,7 @@ Файлы.СоздатьКаталог(полныйПутьРезультатовТестов) знч адресРепозиторияКонфигурации = - "https://gitlab-ci-token:%CI_JOB_TOKEN@%CI_SERVER_HOST/%CI_PROJECT_ROOT_NAMESPACE/%{настройки.Конфигурация + "https://gitlab-ci-token:%CI_JOB_TOKEN@%CI_SERVER_HOST/%CI_PROJECT_NAMESPACE/%{настройки.Конфигурация .Имя}.git" Консоль.Записать("Git_Clone: %адресРепозиторияКонфигурации %{настройки.Конфигурация.Ветка}") Git_Clone(адресРепозиторияКонфигурации, настройки.Конфигурация.Ветка) @@ -293,53 +302,58 @@ Консоль.Записать("WorkspaceValidate: %файлРезультатовВалидации %путьКонфигурацииЕДТ %WP") WorkspaceValidate(файлРезультатовВалидации, путьКонфигурацииЕДТ, WP, ВЕРСИЯ_EDT) - знч файлSonarQube = "%полныйПутьРезультатовТестов/%{настройки.Конфигурация.Имя}.json" - Консоль.Записать("ПреобразоватьОшибкиВФорматSonarCube: %файлSonarQube %файлРезультатовВалидации") - ПреобразоватьОшибкиВФорматSonarCube(файлSonarQube, файлРезультатовВалидации) + если не настройки.СерверSonarQube.Пусто() + знч файлSonarQube = "%полныйПутьРезультатовТестов/%{настройки.Конфигурация.Имя}.json" + Консоль.Записать("ПреобразоватьОшибкиВФорматSonarCube: %файлSonarQube %файлРезультатовВалидации") + ПреобразоватьОшибкиВФорматSonarCube(файлSonarQube, файлРезультатовВалидации) - знч файлПараметровСканера = "%CI_PROJECT_DIR/sonar-project-%{настройки.Конфигурация.Имя}.properties" - знч ключПроекта = "%CI_PROJECT_ROOT_NAMESPACE-%{настройки.Конфигурация.Имя}" + знч файлПараметровСканера = "%CI_PROJECT_DIR/sonar-project-%{настройки.Конфигурация.Имя}.properties" + знч ключПроекта = "%CI_PROJECT_NAMESPACE-%{настройки.Конфигурация.Имя}" - знч тегРелиза = ДатаНовогоРелиза().Форматировать("гггг-ММ-дд") + знч тегРелиза = ДатаНовогоРелиза().Форматировать("гггг-ММ-дд") - Консоль.Записать("СохранитьНастройкиСканера: %файлПараметровСканера %{настройки - .СерверSonarQube} %ключПроекта %{настройки.Конфигурация - .Проект} %тегРелиза %путьКонфигурацииЕДТ %файлSonarQube") - СохранитьНастройкиСканера(файлПараметровСканера, настройки.СерверSonarQube, ключПроекта, настройки.Конфигурация - .Проект, тегРелиза, путьКонфигурацииЕДТ, файлSonarQube) + Консоль.Записать("СохранитьНастройкиСканера: %файлПараметровСканера %{настройки + .СерверSonarQube} %ключПроекта %{настройки.Конфигурация + .Проект} %тегРелиза %путьКонфигурацииЕДТ %файлSonarQube") + СохранитьНастройкиСканера(файлПараметровСканера, настройки.СерверSonarQube, ключПроекта, настройки.Конфигурация + .Проект, тегРелиза, путьКонфигурацииЕДТ, файлSonarQube) - Консоль.Записать("ЗапуститьSonarScanner: %файлПараметровСканера") - ЗапуститьSonarScanner(файлПараметровСканера, SONARQUBE_TOKEN) + Консоль.Записать("ЗапуститьSonarScanner: %файлПараметровСканера") + ЗапуститьSonarScanner(файлПараметровСканера, SONARQUBE_TOKEN) + ; ; метод ПротестироватьИнтерфейс() - знч SCRIPTS = СредаИсполнения.ПолучитьПеременную("SCRIPTS") - знч настройки = ПрочитатьФайлНастроек("%SCRIPTS/../GitLab-CI") - знч CI_JOB_TOKEN = СредаИсполнения.ПолучитьПеременную("CI_JOB_TOKEN") знч CI_PROJECT_DIR = СредаИсполнения.ПолучитьПеременную("CI_PROJECT_DIR") - знч CI_PROJECT_ROOT_NAMESPACE = СредаИсполнения.ПолучитьПеременную("CI_PROJECT_ROOT_NAMESPACE") + знч CI_PROJECT_NAMESPACE = СредаИсполнения.ПолучитьПеременную("CI_PROJECT_NAMESPACE") знч CI_SERVER_HOST = СредаИсполнения.ПолучитьПеременную("CI_SERVER_HOST") знч TMPLTS = СредаИсполнения.ПолучитьПеременную("TMPLTS") знч EPF_UTILS = СредаИсполнения.ПолучитьПеременную("EPF_UTILS") + пер ошибкиТокенов = "" + если TMPLTS.Пусто() - знч текстОшибки = "В переменную TMPLTS необходимо поместить путь до каталогов с шаблонами баз." - выбросить новый ИсключениеНедопустимоеСостояние(текстОшибки) + ошибкиТокенов += "В переменную TMPLTS необходимо поместить путь до каталогов с шаблонами баз." + Символы.НоваяСтрока ; если EPF_UTILS.Пусто() - знч текстОшибки = "В переменную EPF_UTILS необходимо поместить путь до служебных обработок." - выбросить новый ИсключениеНедопустимоеСостояние(текстОшибки) + ошибкиТокенов += "В переменную EPF_UTILS необходимо поместить путь до служебных обработок." + Символы.НоваяСтрока ; + если не ошибкиТокенов.Пусто() + выбросить новый ИсключениеНедопустимоеСостояние(ошибкиТокенов) + ; + + знч настройки = ПрочитатьФайлНастроек("%CI_PROJECT_DIR") + знч полныйПутьПрикладнойСборки = "%CI_PROJECT_DIR/%ИМЯ_КАТАЛОГА_ПРИКЛАДНОЙ_СБОРКИ" знч полныйПутьТестовойСборки = "%CI_PROJECT_DIR/%ИМЯ_КАТАЛОГА_ТЕСТОВОЙ_СБОРКИ" знч путьИБ = Строки.Шаблон("$0/$1", [CI_PROJECT_DIR, "temp/db"]) знч адресРепозиторияКонфигурации = - "https://gitlab-ci-token:%CI_JOB_TOKEN@%CI_SERVER_HOST/%CI_PROJECT_ROOT_NAMESPACE/%{настройки.Конфигурация + "https://gitlab-ci-token:%CI_JOB_TOKEN@%CI_SERVER_HOST/%CI_PROJECT_NAMESPACE/%{настройки.Конфигурация .Имя}.git" Консоль.Записать("Git_Clone: %адресРепозиторияКонфигурации %{настройки.Конфигурация.Ветка}") Git_Clone(адресРепозиторияКонфигурации, настройки.Конфигурация.Ветка) @@ -367,37 +381,37 @@ для репозиторий из настройки.ПрикладныеРасширения знч файлРасширения = "%полныйПутьПрикладнойСборки/%{репозиторий.Проект}.cfe" Консоль.Записать("LoadCfe: %файлРасширения %{репозиторий.Проект} %путьИБ %исполняемыйФайлПлатформы %{настройки.ИнформационнаяБаза - .Пользователь}") + .Пользователь}") LoadExt(файлРасширения, репозиторий.Проект, путьИБ, исполняемыйФайлПлатформы, настройки.ИнформационнаяБаза .Пользователь) Консоль.Записать("UpdateDBExt: %{репозиторий.Проект} %путьИБ %исполняемыйФайлПлатформы %{настройки.ИнформационнаяБаза - .Пользователь}") + .Пользователь}") UpdateDBExt(репозиторий.Проект, путьИБ, исполняемыйФайлПлатформы, настройки.ИнформационнаяБаза.Пользователь) ; для репозиторий из настройки.ТестовыеРасширения знч файлРасширения = "%полныйПутьТестовойСборки/%{репозиторий.Проект}.cfe" Консоль.Записать("LoadCfe: %файлРасширения %{репозиторий.Проект} %путьИБ %исполняемыйФайлПлатформы %{настройки.ИнформационнаяБаза - .Пользователь}") + .Пользователь}") LoadExt(файлРасширения, репозиторий.Проект, путьИБ, исполняемыйФайлПлатформы, настройки.ИнформационнаяБаза .Пользователь) Консоль.Записать("UpdateDBExt: %{репозиторий.Проект} %путьИБ %исполняемыйФайлПлатформы %{настройки.ИнформационнаяБаза - .Пользователь}") + .Пользователь}") UpdateDBExt(репозиторий.Проект, путьИБ, исполняемыйФайлПлатформы, настройки.ИнформационнаяБаза.Пользователь) ; Консоль.Записать("ExecuteCommand: %КОМАНДЫ_ОБНОВЛЕНИЯ_БД %путьИБ %исполняемыйФайлПлатформы %{настройки.ИнформационнаяБаза - .Пользователь}") + .Пользователь}") ExecuteCommand(КОМАНДЫ_ОБНОВЛЕНИЯ_БД, путьИБ, исполняемыйФайлПлатформы, настройки.ИнформационнаяБаза.Пользователь) знч имяОбработкиОтключенияБезопасногоРежима = "%EPF_UTILS/ОтключитьБезопасныйРежимРасширений.epf" Консоль.Записать( "ExecuteDataProcessor: %имяОбработкиОтключенияБезопасногоРежима %путьИБ %исполняемыйФайлПлатформы %{настройки.ИнформационнаяБаза - .Пользователь}") - ExecuteDataProcessor(имяОбработкиОтключенияБезопасногоРежима, "", путьИБ, исполняемыйФайлПлатформы, настройки - .ИнформационнаяБаза.Пользователь) + .Пользователь}") + ExecuteDataProcessor(имяОбработкиОтключенияБезопасногоРежима, "", путьИБ, исполняемыйФайлПлатформы, настройки.ИнформационнаяБаза + .Пользователь) знч имяОбработкиVA = "%EPF_UTILS/vanessa-automation-single.epf" знч параметрыОбработкиVA = "StartFeaturePlayer;WorkspaceRoot=${CI_PROJECT_DIR};VBParams=VBParams.json" @@ -423,12 +437,12 @@ метод ПроверитьКоммитыРепозиторияДляПоследнегоРелиза(репозиторий: ОписаниеРепозитория, датаПоследнегоРелиза: ДатаВремя): ДатаВремя|Неопределено - знч CI_PROJECT_ROOT_NAMESPACE = СредаИсполнения.ПолучитьПеременную("CI_PROJECT_ROOT_NAMESPACE") + знч CI_PROJECT_NAMESPACE = СредаИсполнения.ПолучитьПеременную("CI_PROJECT_NAMESPACE") знч CI_SERVER_HOST = СредаИсполнения.ПолучитьПеременную("CI_SERVER_HOST") знч токен = СредаИсполнения.ПолучитьПеременную(репозиторий.ПеременнаяТокена) - знч имяПроекта = "%CI_PROJECT_ROOT_NAMESPACE/%{репозиторий.Имя}" + знч имяПроекта = "%CI_PROJECT_NAMESPACE/%{репозиторий.Имя}" пер коммиты = новый Массив() если датаПоследнегоРелиза == новый ДатаВремя(1, 1, 1) Консоль.Записать("Commits_List: %{репозиторий.Ветка} %имяПроекта %CI_SERVER_HOST") @@ -628,7 +642,7 @@ знч путьКПлатформе = установленныеПлатформы.Получить(версияПлатформы) возврат "%путьКПлатформе/bin/1cv8" ; - + знч максимальныеПлатформы = МаксимальныеПлатформы() если максимальныеПлатформы.СодержитКлюч(версияПлатформы) знч путьКПлатформе = максимальныеПлатформы.Получить(версияПлатформы)