You've already forked OpenIntegrations
mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2025-08-10 22:41:43 +02:00
Доработка автодобавления новых пайплайнов в Jenkins
This commit is contained in:
@@ -10,10 +10,18 @@
|
|||||||
Перем ШаблонCliDeb;
|
Перем ШаблонCliDeb;
|
||||||
Перем ШаблонШага;
|
Перем ШаблонШага;
|
||||||
Перем ШаблонВыполнения;
|
Перем ШаблонВыполнения;
|
||||||
|
Перем ШаблонПайплайна;
|
||||||
|
Перем ШаблонПапки;
|
||||||
|
Перем ЛогинJenkins;
|
||||||
|
Перем ТокенJenkins;
|
||||||
|
Перем ХостJenkins;
|
||||||
|
|
||||||
Процедура СоздатьНаборWorkflow(Знач Языки, Знач КаталогПараметров, Знач КаталогWorkflow) Экспорт
|
Процедура СоздатьНаборWorkflow(Знач Языки, Знач КаталогПараметров, Знач КаталогWorkflow) Экспорт
|
||||||
|
|
||||||
КаталогШаблонов = "./service/templates/jenkins/";
|
КаталогШаблонов = "./service/templates/jenkins/";
|
||||||
|
ЛогинJenkins = ПолучитьПеременнуюСреды("JENKINS_LOGIN", РасположениеПеременнойСреды.Машина);
|
||||||
|
ТокенJenkins = ПолучитьПеременнуюСреды("JENKINS_TOKEN", РасположениеПеременнойСреды.Машина);
|
||||||
|
ХостJenkins = "https://jenkins.openintegrations.dev";
|
||||||
|
|
||||||
ПутьШаблонаCliWindows = КаталогШаблонов + "cli_test_windows.txt";
|
ПутьШаблонаCliWindows = КаталогШаблонов + "cli_test_windows.txt";
|
||||||
ПутьШаблонаOsWindows = КаталогШаблонов + "os_test_windows.txt";
|
ПутьШаблонаOsWindows = КаталогШаблонов + "os_test_windows.txt";
|
||||||
@@ -23,6 +31,8 @@
|
|||||||
|
|
||||||
ПутьШаблонаШага = КаталогШаблонов + "test_stage.txt";
|
ПутьШаблонаШага = КаталогШаблонов + "test_stage.txt";
|
||||||
ПутьШаблонаВыполнения = КаталогШаблонов + "test_exec.txt";
|
ПутьШаблонаВыполнения = КаталогШаблонов + "test_exec.txt";
|
||||||
|
ПутьШаблонаПайплайна = КаталогШаблонов + "conf_pipeline.txt";
|
||||||
|
ПутьШаблонаПапки = КаталогШаблонов + "conf_folder.txt";
|
||||||
|
|
||||||
ШаблонCliWindows = Новый ДвоичныеДанные(ПутьШаблонаCliWindows);
|
ШаблонCliWindows = Новый ДвоичныеДанные(ПутьШаблонаCliWindows);
|
||||||
ШаблонCliWindows = ПолучитьСтрокуИзДвоичныхДанных(ШаблонCliWindows);
|
ШаблонCliWindows = ПолучитьСтрокуИзДвоичныхДанных(ШаблонCliWindows);
|
||||||
@@ -45,6 +55,14 @@
|
|||||||
ШаблонВыполнения = Новый ДвоичныеДанные(ПутьШаблонаВыполнения);
|
ШаблонВыполнения = Новый ДвоичныеДанные(ПутьШаблонаВыполнения);
|
||||||
ШаблонВыполнения = ПолучитьСтрокуИзДвоичныхДанных(ШаблонВыполнения);
|
ШаблонВыполнения = ПолучитьСтрокуИзДвоичныхДанных(ШаблонВыполнения);
|
||||||
|
|
||||||
|
ШаблонПайплайна = Новый ДвоичныеДанные(ПутьШаблонаПайплайна);
|
||||||
|
ШаблонПайплайна = ПолучитьСтрокуИзДвоичныхДанных(ШаблонПайплайна);
|
||||||
|
|
||||||
|
ШаблонПапки = Новый ДвоичныеДанные(ПутьШаблонаПапки);
|
||||||
|
ШаблонПапки = ПолучитьСтрокуИзДвоичныхДанных(ШаблонПапки);
|
||||||
|
|
||||||
|
СоздатьНачальнуюСтруктуруJenkins();
|
||||||
|
|
||||||
Для Каждого Язык Из Языки Цикл
|
Для Каждого Язык Из Языки Цикл
|
||||||
|
|
||||||
ФайлПараметров = КаталогПараметров + Язык + ".json";
|
ФайлПараметров = КаталогПараметров + Язык + ".json";
|
||||||
@@ -53,17 +71,33 @@
|
|||||||
СписокБиблиотек = Неопределено;
|
СписокБиблиотек = Неопределено;
|
||||||
Выполнить("СписокБиблиотек = " + ЛокальныеПараметры["testsSectionsMethod"]);
|
Выполнить("СписокБиблиотек = " + ЛокальныеПараметры["testsSectionsMethod"]);
|
||||||
|
|
||||||
СформироватьWorflow(ЛокальныеПараметры, КаталогWorkflow, Язык, СписокБиблиотек);
|
ПутьJenkins = "/job/OPITest/job/OpiFullTest";
|
||||||
|
СформироватьWorflow(ЛокальныеПараметры, КаталогWorkflow, Язык, СписокБиблиотек, ПутьJenkins);
|
||||||
|
|
||||||
Для Каждого Библиотека Из СписокБиблиотек Цикл
|
Для Каждого Библиотека Из СписокБиблиотек Цикл
|
||||||
СформироватьWorflow(ЛокальныеПараметры, СтрШаблон("%1%2/%3/", КаталогWorkflow, "split_tests", Библиотека.Ключ), Язык, Библиотека);
|
|
||||||
|
ИмяБиблиотеки = Библиотека.Ключ;
|
||||||
|
ПутьJenkinsРаздельных = "/job/OPITest/job/OpiSplitTests";
|
||||||
|
ПутьJenkinsБиблиотеки = ПутьJenkinsРаздельных + "/job/" + ИмяБиблиотеки;
|
||||||
|
|
||||||
|
СоздатьПапкуJenkins(ПутьJenkinsРаздельных, ИмяБиблиотеки, ИмяБиблиотеки);
|
||||||
|
СформироватьWorflow(ЛокальныеПараметры
|
||||||
|
, СтрШаблон("%1%2/%3/", КаталогWorkflow, "split_tests", ИмяБиблиотеки)
|
||||||
|
, Язык
|
||||||
|
, Библиотека
|
||||||
|
, ПутьJenkinsБиблиотеки);
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
Процедура СформироватьWorflow(Знач Параметры, Знач КаталогWorkflow, Знач Язык, Знач СписокБиблиотек)
|
Процедура СформироватьWorflow(Знач Параметры
|
||||||
|
, Знач КаталогWorkflow
|
||||||
|
, Знач Язык
|
||||||
|
, Знач СписокБиблиотек
|
||||||
|
, Знач ПутьJenkins)
|
||||||
|
|
||||||
СписокРабот = "";
|
СписокРабот = "";
|
||||||
ТаблицаТестов = Неопределено;
|
ТаблицаТестов = Неопределено;
|
||||||
@@ -99,12 +133,43 @@
|
|||||||
ТекстJFCLIRPM = СтрШаблон(ШаблонCliRpm, Язык, ТекстВыполненияCLI, "Rpm-Agent");
|
ТекстJFCLIRPM = СтрШаблон(ШаблонCliRpm, Язык, ТекстВыполненияCLI, "Rpm-Agent");
|
||||||
ТекстJFCLIDEB = СтрШаблон(ШаблонCliDeb, Язык, ТекстВыполненияCLI, "Deb-Agent");
|
ТекстJFCLIDEB = СтрШаблон(ШаблонCliDeb, Язык, ТекстВыполненияCLI, "Deb-Agent");
|
||||||
|
|
||||||
|
ШаблонПредставления = "OPI | Тестирование версии для %1 (%2, %3)";
|
||||||
|
|
||||||
ПолучитьДвоичныеДанныеИзСтроки(ТекстJFOS).Записать(ФайлJenkinsOS);
|
ПолучитьДвоичныеДанныеИзСтроки(ТекстJFOS).Записать(ФайлJenkinsOS);
|
||||||
|
СоздатьПайплайнJenkins(ПутьJenkins
|
||||||
|
, "OpiOsWin" + Язык
|
||||||
|
, СтрШаблон(ШаблонПредставления, "OneScript", "Windows", Язык)
|
||||||
|
, ФайлJenkinsOS);
|
||||||
|
|
||||||
ПолучитьДвоичныеДанныеИзСтроки(ТекстJFOSRPM).Записать(ФайлJenkinsOSRPM);
|
ПолучитьДвоичныеДанныеИзСтроки(ТекстJFOSRPM).Записать(ФайлJenkinsOSRPM);
|
||||||
|
СоздатьПайплайнJenkins(ПутьJenkins
|
||||||
|
, "OpiOsRpm" + Язык
|
||||||
|
, СтрШаблон(ШаблонПредставления, "OneScript", "RPM", Язык)
|
||||||
|
, ФайлJenkinsOSRPM);
|
||||||
|
|
||||||
ПолучитьДвоичныеДанныеИзСтроки(ТекстJFOSDEB).Записать(ФайлJenkinsOSDEB);
|
ПолучитьДвоичныеДанныеИзСтроки(ТекстJFOSDEB).Записать(ФайлJenkinsOSDEB);
|
||||||
|
СоздатьПайплайнJenkins(ПутьJenkins
|
||||||
|
, "OpiOsDeb" + Язык
|
||||||
|
, СтрШаблон(ШаблонПредставления, "OneScript", "DEB", Язык)
|
||||||
|
, ФайлJenkinsOSDEB);
|
||||||
|
|
||||||
ПолучитьДвоичныеДанныеИзСтроки(ТекстJFCLI).Записать(ФайлWindowsCLI);
|
ПолучитьДвоичныеДанныеИзСтроки(ТекстJFCLI).Записать(ФайлWindowsCLI);
|
||||||
|
СоздатьПайплайнJenkins(ПутьJenkins
|
||||||
|
, "OpiCliWin" + Язык
|
||||||
|
, СтрШаблон(ШаблонПредставления, "CLI", "Windows", Язык)
|
||||||
|
, ФайлWindowsCLI);
|
||||||
|
|
||||||
ПолучитьДвоичныеДанныеИзСтроки(ТекстJFCLIRPM).Записать(ФайлRpmCLI);
|
ПолучитьДвоичныеДанныеИзСтроки(ТекстJFCLIRPM).Записать(ФайлRpmCLI);
|
||||||
|
СоздатьПайплайнJenkins(ПутьJenkins
|
||||||
|
, "OpiCliRpm" + Язык
|
||||||
|
, СтрШаблон(ШаблонПредставления, "CLI", "RPM", Язык)
|
||||||
|
, ФайлRpmCLI);
|
||||||
|
|
||||||
ПолучитьДвоичныеДанныеИзСтроки(ТекстJFCLIDEB).Записать(ФайлDebCLI);
|
ПолучитьДвоичныеДанныеИзСтроки(ТекстJFCLIDEB).Записать(ФайлDebCLI);
|
||||||
|
СоздатьПайплайнJenkins(ПутьJenkins
|
||||||
|
, "OpiCliDeb" + Язык
|
||||||
|
, СтрШаблон(ШаблонПредставления, "CLI", "DEB", Язык)
|
||||||
|
, ФайлDebCLI);
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
@@ -145,4 +210,63 @@
|
|||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
|
Процедура СоздатьНачальнуюСтруктуруJenkins()
|
||||||
|
|
||||||
|
УдалитьЭлементJenkins("/job/OPITest");
|
||||||
|
|
||||||
|
СоздатьПапкуJenkins("", "OPITest", "OPI | Тестирование");
|
||||||
|
СоздатьПапкуJenkins("/job/OPITest", "OpiFullTest", "Полные тесты");
|
||||||
|
СоздатьПапкуJenkins("/job/OPITest", "OpiSplitTests", "Раздельные тесты");
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура СоздатьПапкуJenkins(Знач Путь, Знач Имя, Знач Представление)
|
||||||
|
|
||||||
|
Данные = СтрШаблон(ШаблонПапки, Представление);
|
||||||
|
|
||||||
|
СоздатьЭлементJenkins(Путь, Имя + "&mode=com.cloudbees.hudson.plugins.folder.Folder", Данные);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура СоздатьПайплайнJenkins(Знач Путь, Знач Имя, Знач Представление, Знач Jenkinsfile)
|
||||||
|
|
||||||
|
Данные = СтрШаблон(ШаблонПайплайна, Представление, Jenkinsfile);
|
||||||
|
|
||||||
|
СоздатьЭлементJenkins(Путь, Имя, Данные);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура СоздатьЭлементJenkins(Знач Путь, Знач Имя, Знач Данные)
|
||||||
|
|
||||||
|
Url = СтрШаблон("%1%2/createItem?name=%3", ХостJenkins, Путь, Имя);
|
||||||
|
|
||||||
|
Результат = OPI_ЗапросыHTTP.НовыйЗапрос()
|
||||||
|
.Инициализировать()
|
||||||
|
.УстановитьURL(URL)
|
||||||
|
.УстановитьСтроковоеТело(Данные)
|
||||||
|
.УстановитьТипДанных("application/xml")
|
||||||
|
.ДобавитьBasicАвторизацию(ЛогинJenkins, ТокенJenkins)
|
||||||
|
.ОбработатьЗапрос("POST")
|
||||||
|
.ВернутьОтветКакСтроку();
|
||||||
|
|
||||||
|
Сообщить(Результат);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
Процедура УдалитьЭлементJenkins(Знач Путь)
|
||||||
|
|
||||||
|
Url = СтрШаблон("%1%2/doDelete", ХостJenkins, Путь);
|
||||||
|
|
||||||
|
Результат = OPI_ЗапросыHTTP.НовыйЗапрос()
|
||||||
|
.Инициализировать()
|
||||||
|
.УстановитьURL(URL)
|
||||||
|
.ДобавитьBasicАвторизацию(ЛогинJenkins, ТокенJenkins)
|
||||||
|
.ОбработатьЗапрос("POST")
|
||||||
|
.ВернутьОтветКакСтроку();
|
||||||
|
|
||||||
|
Сообщить(Результат);
|
||||||
|
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
20
service/templates/jenkins/conf_folder.txt
vendored
Normal file
20
service/templates/jenkins/conf_folder.txt
vendored
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<?xml version='1.1' encoding='UTF-8'?>
|
||||||
|
<com.cloudbees.hudson.plugins.folder.Folder plugin="cloudbees-folder">
|
||||||
|
<description></description>
|
||||||
|
<displayName>%1</displayName>
|
||||||
|
<properties/>
|
||||||
|
<folderViews class="com.cloudbees.hudson.plugins.folder.views.DefaultFolderViewHolder">
|
||||||
|
<views>
|
||||||
|
<hudson.model.AllView>
|
||||||
|
<owner class="com.cloudbees.hudson.plugins.folder.Folder" reference="../../../.."/>
|
||||||
|
<name>All</name>
|
||||||
|
<filterExecutors>false</filterExecutors>
|
||||||
|
<filterQueue>false</filterQueue>
|
||||||
|
<properties class="hudson.model.View$PropertyList"/>
|
||||||
|
</hudson.model.AllView>
|
||||||
|
</views>
|
||||||
|
<tabBar class="hudson.views.DefaultViewsTabBar"/>
|
||||||
|
</folderViews>
|
||||||
|
<healthMetrics/>
|
||||||
|
<icon class="com.cloudbees.hudson.plugins.folder.icons.StockFolderIcon"/>
|
||||||
|
</com.cloudbees.hudson.plugins.folder.Folder>
|
56
service/templates/jenkins/conf_pipeline.txt
vendored
Normal file
56
service/templates/jenkins/conf_pipeline.txt
vendored
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
<?xml version='1.1' encoding='UTF-8'?>
|
||||||
|
<flow-definition plugin="workflow-job">
|
||||||
|
<actions>
|
||||||
|
<org.jenkinsci.plugins.pipeline.modeldefinition.actions.DeclarativeJobAction plugin="pipeline-model-definition"/>
|
||||||
|
<org.jenkinsci.plugins.pipeline.modeldefinition.actions.DeclarativeJobPropertyTrackerAction plugin="pipeline-model-definition">
|
||||||
|
<jobProperties/>
|
||||||
|
<triggers/>
|
||||||
|
<parameters/>
|
||||||
|
<options/>
|
||||||
|
</org.jenkinsci.plugins.pipeline.modeldefinition.actions.DeclarativeJobPropertyTrackerAction>
|
||||||
|
</actions>
|
||||||
|
<description></description>
|
||||||
|
<displayName>%1</displayName>
|
||||||
|
<keepDependencies>false</keepDependencies>
|
||||||
|
<properties>
|
||||||
|
<org.jenkinsci.plugins.workflow.job.properties.DisableConcurrentBuildsJobProperty>
|
||||||
|
<abortPrevious>false</abortPrevious>
|
||||||
|
</org.jenkinsci.plugins.workflow.job.properties.DisableConcurrentBuildsJobProperty>
|
||||||
|
<com.coravy.hudson.plugins.github.GithubProjectProperty plugin="github">
|
||||||
|
<projectUrl>https://github.com/Bayselonarrend/OpenIntegrations/</projectUrl>
|
||||||
|
<displayName></displayName>
|
||||||
|
</com.coravy.hudson.plugins.github.GithubProjectProperty>
|
||||||
|
<jenkins.model.BuildDiscarderProperty>
|
||||||
|
<strategy class="hudson.tasks.LogRotator">
|
||||||
|
<daysToKeep>-1</daysToKeep>
|
||||||
|
<numToKeep>5</numToKeep>
|
||||||
|
<artifactDaysToKeep>-1</artifactDaysToKeep>
|
||||||
|
<artifactNumToKeep>-1</artifactNumToKeep>
|
||||||
|
<removeLastBuild>false</removeLastBuild>
|
||||||
|
</strategy>
|
||||||
|
</jenkins.model.BuildDiscarderProperty>
|
||||||
|
</properties>
|
||||||
|
<definition class="org.jenkinsci.plugins.workflow.cps.CpsScmFlowDefinition" plugin="workflow-cps">
|
||||||
|
<scm class="hudson.plugins.git.GitSCM" plugin="git">
|
||||||
|
<configVersion>2</configVersion>
|
||||||
|
<userRemoteConfigs>
|
||||||
|
<hudson.plugins.git.UserRemoteConfig>
|
||||||
|
<url>https://github.com/Bayselonarrend/OpenIntegrations</url>
|
||||||
|
<credentialsId>gitmain</credentialsId>
|
||||||
|
</hudson.plugins.git.UserRemoteConfig>
|
||||||
|
</userRemoteConfigs>
|
||||||
|
<branches>
|
||||||
|
<hudson.plugins.git.BranchSpec>
|
||||||
|
<name>*/main</name>
|
||||||
|
</hudson.plugins.git.BranchSpec>
|
||||||
|
</branches>
|
||||||
|
<doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations>
|
||||||
|
<submoduleCfg class="empty-list"/>
|
||||||
|
<extensions/>
|
||||||
|
</scm>
|
||||||
|
<scriptPath>%2</scriptPath>
|
||||||
|
<lightweight>true</lightweight>
|
||||||
|
</definition>
|
||||||
|
<triggers/>
|
||||||
|
<disabled>false</disabled>
|
||||||
|
</flow-definition>
|
Reference in New Issue
Block a user