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;
|
||||
Перем ШаблонШага;
|
||||
Перем ШаблонВыполнения;
|
||||
Перем ШаблонПайплайна;
|
||||
Перем ШаблонПапки;
|
||||
Перем ЛогинJenkins;
|
||||
Перем ТокенJenkins;
|
||||
Перем ХостJenkins;
|
||||
|
||||
Процедура СоздатьНаборWorkflow(Знач Языки, Знач КаталогПараметров, Знач КаталогWorkflow) Экспорт
|
||||
|
||||
КаталогШаблонов = "./service/templates/jenkins/";
|
||||
ЛогинJenkins = ПолучитьПеременнуюСреды("JENKINS_LOGIN", РасположениеПеременнойСреды.Машина);
|
||||
ТокенJenkins = ПолучитьПеременнуюСреды("JENKINS_TOKEN", РасположениеПеременнойСреды.Машина);
|
||||
ХостJenkins = "https://jenkins.openintegrations.dev";
|
||||
|
||||
ПутьШаблонаCliWindows = КаталогШаблонов + "cli_test_windows.txt";
|
||||
ПутьШаблонаOsWindows = КаталогШаблонов + "os_test_windows.txt";
|
||||
@@ -23,6 +31,8 @@
|
||||
|
||||
ПутьШаблонаШага = КаталогШаблонов + "test_stage.txt";
|
||||
ПутьШаблонаВыполнения = КаталогШаблонов + "test_exec.txt";
|
||||
ПутьШаблонаПайплайна = КаталогШаблонов + "conf_pipeline.txt";
|
||||
ПутьШаблонаПапки = КаталогШаблонов + "conf_folder.txt";
|
||||
|
||||
ШаблонCliWindows = Новый ДвоичныеДанные(ПутьШаблонаCliWindows);
|
||||
ШаблонCliWindows = ПолучитьСтрокуИзДвоичныхДанных(ШаблонCliWindows);
|
||||
@@ -45,6 +55,14 @@
|
||||
ШаблонВыполнения = Новый ДвоичныеДанные(ПутьШаблонаВыполнения);
|
||||
ШаблонВыполнения = ПолучитьСтрокуИзДвоичныхДанных(ШаблонВыполнения);
|
||||
|
||||
ШаблонПайплайна = Новый ДвоичныеДанные(ПутьШаблонаПайплайна);
|
||||
ШаблонПайплайна = ПолучитьСтрокуИзДвоичныхДанных(ШаблонПайплайна);
|
||||
|
||||
ШаблонПапки = Новый ДвоичныеДанные(ПутьШаблонаПапки);
|
||||
ШаблонПапки = ПолучитьСтрокуИзДвоичныхДанных(ШаблонПапки);
|
||||
|
||||
СоздатьНачальнуюСтруктуруJenkins();
|
||||
|
||||
Для Каждого Язык Из Языки Цикл
|
||||
|
||||
ФайлПараметров = КаталогПараметров + Язык + ".json";
|
||||
@@ -53,17 +71,33 @@
|
||||
СписокБиблиотек = Неопределено;
|
||||
Выполнить("СписокБиблиотек = " + ЛокальныеПараметры["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");
|
||||
ТекстJFCLIDEB = СтрШаблон(ШаблонCliDeb, Язык, ТекстВыполненияCLI, "Deb-Agent");
|
||||
|
||||
ШаблонПредставления = "OPI | Тестирование версии для %1 (%2, %3)";
|
||||
|
||||
ПолучитьДвоичныеДанныеИзСтроки(ТекстJFOS).Записать(ФайлJenkinsOS);
|
||||
СоздатьПайплайнJenkins(ПутьJenkins
|
||||
, "OpiOsWin" + Язык
|
||||
, СтрШаблон(ШаблонПредставления, "OneScript", "Windows", Язык)
|
||||
, ФайлJenkinsOS);
|
||||
|
||||
ПолучитьДвоичныеДанныеИзСтроки(ТекстJFOSRPM).Записать(ФайлJenkinsOSRPM);
|
||||
СоздатьПайплайнJenkins(ПутьJenkins
|
||||
, "OpiOsRpm" + Язык
|
||||
, СтрШаблон(ШаблонПредставления, "OneScript", "RPM", Язык)
|
||||
, ФайлJenkinsOSRPM);
|
||||
|
||||
ПолучитьДвоичныеДанныеИзСтроки(ТекстJFOSDEB).Записать(ФайлJenkinsOSDEB);
|
||||
СоздатьПайплайнJenkins(ПутьJenkins
|
||||
, "OpiOsDeb" + Язык
|
||||
, СтрШаблон(ШаблонПредставления, "OneScript", "DEB", Язык)
|
||||
, ФайлJenkinsOSDEB);
|
||||
|
||||
ПолучитьДвоичныеДанныеИзСтроки(ТекстJFCLI).Записать(ФайлWindowsCLI);
|
||||
СоздатьПайплайнJenkins(ПутьJenkins
|
||||
, "OpiCliWin" + Язык
|
||||
, СтрШаблон(ШаблонПредставления, "CLI", "Windows", Язык)
|
||||
, ФайлWindowsCLI);
|
||||
|
||||
ПолучитьДвоичныеДанныеИзСтроки(ТекстJFCLIRPM).Записать(ФайлRpmCLI);
|
||||
СоздатьПайплайнJenkins(ПутьJenkins
|
||||
, "OpiCliRpm" + Язык
|
||||
, СтрШаблон(ШаблонПредставления, "CLI", "RPM", Язык)
|
||||
, ФайлRpmCLI);
|
||||
|
||||
ПолучитьДвоичныеДанныеИзСтроки(Текст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