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-01-26 11:11:06 +03:00
parent 9e2af7e11a
commit bbe01453fb
+73 -59
View File
@@ -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"
;
знч максимальныеПлатформы = МаксимальныеПлатформы()
если максимальныеПлатформы.СодержитКлюч(версияПлатформы)
знч путьКПлатформе = максимальныеПлатформы.Получить(версияПлатформы)