1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-11-27 22:18:36 +02:00
Files
OpenIntegrations/ci/os/releasemaker.os

372 lines
16 KiB
Plaintext
Raw Normal View History

Перем Репозиторий;
Перем Версия;
Перем Режим;
Перем Файл1С;
Перем ПутьКРепозиторию;
Перем Сервер;
Перем ПутьВыгрузки;
Перем Оскрипт;
Перем ПутьДвижка;
Перем ХешСумма;
Процедура НачалоРаботы()
Репозиторий = "https://github.com/Bayselonarrend/OpenIntegrations";
Версия = "1.28.0";
Режим = "CONFIG";
//Локальные данные
Файл1С = """C:\Program Files\1cv8\8.3.18.1208\bin\1cv8.exe""";
Сервер = "DEVSRV";
ОСкрипт = "C:\Program Files\OneScript\";
ПутьДвижка = "/mnt/c/engine/linux/";
2025-07-30 15:25:07 +03:00
ПутьКРепозиторию = "C:\ProgramData\Jenkins\.jenkins\workspace\OpiBuild\OpiRelease";
2024-10-25 21:46:53 +03:00
//ПутьКРепозиторию = "C:\Repos\OPI";
ПутьВыгрузки = ПутьКРепозиторию + "\" + Версия + "\";
2025-05-22 22:08:55 +03:00
ПутьMelezh = ПутьКРепозиторию + "\Melezh";
ХешСумма = ПолучитьСтрокуИзДвоичныхДанных(Новый ДвоичныеДанные(ПутьКРепозиторию + "\service\last_build_hash.txt"));
//----------------
2024-09-20 13:27:25 +03:00
ОбъектПутьВыгрузки = Новый Файл(ПутьВыгрузки);
2024-09-20 13:24:24 +03:00
Если Не ОбъектПутьВыгрузки.Существует() Тогда
СоздатьКаталог(ПутьВыгрузки);
КонецЕсли;
2025-06-14 23:00:46 +03:00
ЗапуститьПриложение("git clone https://github.com/bayselonarrend/Melezh");
2025-06-14 16:35:48 +03:00
// ЗапуститьПриложение("git clone --depth=1 https://github.com/bayselonarrend/Melezh --branch 0.1.0");
2024-09-20 13:24:24 +03:00
МассивЛокализаций = Новый Массив();
СтруктураРус = Новый Структура();
СтруктураРус.Вставить("База" , "OpenIntegrations");
СтруктураРус.Вставить("ПутьКEDT", ПутьКРепозиторию + "\src\ru\OPI");
СтруктураРус.Вставить("ПутьOS" , ПутьКРепозиторию + "\src\ru\OInt");
СтруктураРус.Вставить("ПутьCLI" , ПутьКРепозиторию + "\src\ru\cli\core\Classes\app.os");
2024-10-26 09:21:38 +03:00
СтруктураРус.Вставить("ПутьCLIP", ПутьКРепозиторию + "\src\ru\cli");
СтруктураРус.Вставить("ПутьISS" , ПутьКРепозиторию + "\service\iss\ru.iss");
2024-09-20 20:37:38 +03:00
СтруктураРус.Вставить("Описание", "OInt CLI - приложение для работы с API различных онлайн-сервисов из командной строки");
СтруктураРус.Вставить("Префикс" , "ru");
СтруктураАнг = Новый Структура();
2025-06-27 18:38:15 +03:00
СтруктураАнг.Вставить("База" , "OpenIntegrationsEng");
СтруктураАнг.Вставить("ПутьКEDT", ПутьКРепозиторию + "\src\en\OPI");
СтруктураАнг.Вставить("ПутьOS" , ПутьКРепозиторию + "\src\en\OInt");
СтруктураАнг.Вставить("ПутьCLI" , ПутьКРепозиторию + "\src\en\cli\core\Classes\app.os");
2024-10-26 09:27:38 +03:00
СтруктураАнг.Вставить("ПутьCLIP", ПутьКРепозиторию + "\src\en\cli");
СтруктураАнг.Вставить("ПутьISS" , ПутьКРепозиторию + "\service\iss\en.iss");
2024-09-20 20:37:38 +03:00
СтруктураАнг.Вставить("Описание", "OInt CLI - CLI toolkit for integrating with APIs of popular online services");
СтруктураАнг.Вставить("Префикс" , "en");
2025-09-10 19:17:52 +03:00
МассивЛокализаций.Добавить(СтруктураАнг);
2025-09-10 19:17:52 +03:00
МассивЛокализаций.Добавить(СтруктураРус);
КаталогВыгрузки = Новый Файл(ПутьВыгрузки);
Если КаталогВыгрузки.Существует() Тогда
УдалитьФайлы(ПутьВыгрузки);
КонецЕсли;
СоздатьКаталог(ПутьВыгрузки);
Приостановить(2000);
Для Каждого Локализация Из МассивЛокализаций Цикл
2024-10-26 15:55:45 +03:00
СоздатьXML(Локализация);
СоздатьCFE(Локализация);
СоздатьEDT(Локализация);
СоздатьOSPX(Локализация);
//СоздатьEXE(Локализация);
2024-09-20 17:17:32 +03:00
СоздатьПакеты(Локализация);
2024-10-26 15:55:45 +03:00
СоздатьУстановщик(Локализация);
2024-04-06 13:19:11 +03:00
УдалитьФайлы(".\ci\installer_set\share\oint\lib\oint");
УдалитьФайлы(".\ci\installer_set\share\oint\lib\oint-cli");
КонецЦикла;
2024-05-13 13:50:20 +03:00
//Draft
2024-04-06 13:19:11 +03:00
ФайлыРелиза = НайтиФайлы(ПутьВыгрузки, "*", Истина);
2024-04-06 13:19:11 +03:00
2024-09-20 20:55:48 +03:00
Сообщить("Start GHCLI");
2024-09-20 20:43:26 +03:00
Для Каждого ФайлРелиза Из ФайлыРелиза Цикл
2024-10-26 15:55:45 +03:00
ЗапуститьПриложение("""C:\Program Files\GitHub CLI\gh.exe"" release delete-asset draft --yes --repo " + Репозиторий + " """ + ФайлРелиза.Имя + """", , Истина);
ЗапуститьПриложение("""C:\Program Files\GitHub CLI\gh.exe"" release upload draft --repo " + Репозиторий + " """ + ФайлРелиза.ПолноеИмя + """", , Истина);
КонецЦикла;
2024-09-20 20:55:48 +03:00
Сообщить("End GHCLI");
2024-09-20 20:43:26 +03:00
КонецПроцедуры
2024-04-06 13:19:11 +03:00
Процедура СоздатьCFE(Данные)
2024-04-06 13:19:11 +03:00
2024-09-20 20:55:48 +03:00
Сообщить("Start CFE");
2024-09-20 14:32:42 +03:00
База = Данные["База"];
Префикс = Данные["Префикс"];
Основа = Файл1С + " " + Режим + " /S " + Сервер + "\" + База + " ";
//CFE
ВыгрузкаВФайл = Основа
+ "/DumpCfg """
+ ПутьВыгрузки
+ "OpenIntegrations_"
+ Версия
+ "_"
+ Префикс
+ ".cfe"
+ """ -Extension OpenIntegrations";
ЗапуститьПриложение(ВыгрузкаВФайл, , Истина);
2024-09-20 14:32:42 +03:00
2024-09-20 20:55:48 +03:00
Сообщить("End CFE");
КонецПроцедуры
2024-04-06 13:19:11 +03:00
Процедура СоздатьXML(Данные)
2024-04-06 13:19:11 +03:00
2024-09-20 20:55:48 +03:00
Сообщить("Start XML");
2024-09-20 14:32:42 +03:00
Префикс = вРег(Данные["Префикс"]);
База = Данные["База"];
Основа = Файл1С + " " + Режим + " /S " + Сервер + "\" + База + " ";
2024-04-06 13:19:11 +03:00
// XML
ПапкаXML = ПутьВыгрузки + "XML_" + Префикс;
2024-05-13 14:10:19 +03:00
КаталогXML = Новый Файл(ПапкаXML);
Если Не КаталогXML.Существует() Тогда
СоздатьКаталог(ПапкаXML);
КонецЕсли;
2024-05-13 14:10:19 +03:00
ВыгрузкаВXML = Основа + "/DumpConfigToFiles """ + ПапкаXML + """ -Extension OpenIntegrations";
ЗапуститьПриложение(ВыгрузкаВXML, , Истина);
2024-04-06 13:19:11 +03:00
ПутьZIP = ПутьВыгрузки + "XML_" + Префикс + ".zip";
ZipXML = Новый ЗаписьZipФайла(ПутьZIP);
2024-05-13 13:50:20 +03:00
ZipXML.Добавить(ПапкаXML
+ "\*.*" , РежимСохраненияПутейZIP.СохранятьОтносительныеПути, РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно);
ZipXML.Записать();
2024-05-13 13:50:20 +03:00
УдалитьФайлы(ПапкаXML);
2024-05-13 13:50:20 +03:00
2024-09-20 20:55:48 +03:00
Сообщить("End XML");
2024-09-20 14:32:42 +03:00
КонецПроцедуры
2024-05-13 13:50:20 +03:00
Процедура СоздатьEDT(Данные)
2024-09-20 20:55:48 +03:00
Сообщить("Start EDT");
2024-09-20 14:32:42 +03:00
Префикс = вРег(Данные["Префикс"]);
ПутьКEDT = Данные["ПутьКEDT"];
ПутьZIP = ПутьВыгрузки + "EDT_" + Префикс + ".zip";
ZipEDT = Новый ЗаписьZipФайла(ПутьZIP);
//EDT
ZipEDT.Добавить(ПутьКEDT + "\*.*"
, РежимСохраненияПутейZIP.СохранятьОтносительныеПути, РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно);
ZipEDT.Записать();
2024-09-20 20:55:48 +03:00
Сообщить("End EDT");
2024-09-20 14:32:42 +03:00
КонецПроцедуры
Процедура СоздатьOSPX(Данные)
2024-09-20 20:55:48 +03:00
Сообщить("Start OSPX");
2024-09-20 14:32:42 +03:00
2024-10-26 09:21:38 +03:00
ПутьOS = Данные["ПутьOS"];
ПутьCLIP = Данные["ПутьCLIP"];
Префикс = Данные["Префикс"];
2024-06-07 20:00:48 +03:00
СтандартноеИмяOSPX = "oint-" + Версия + ".ospx";
ИмяOSPX = "oint-" + Версия + "_" + Префикс + ".ospx";
КонечныйПутьOSPX = ПутьВыгрузки + ИмяOSPX;
СтандартноеИмяCLI = "oint-cli-" + Версия + ".ospx";
ИмяCLI = "oint-cli-" + Версия + "_" + Префикс + ".ospx";
КонечныйПутьCLI = ПутьВыгрузки + ИмяCLI;
//OSPX
2025-06-27 18:38:15 +03:00
СборкаOS = "opm b -o ""C:/Dev/"" """ + ПутьOS + """";
ЗапуститьПриложение(СборкаOS, , Истина);
2025-06-27 18:38:15 +03:00
ПереместитьФайл("C:\Dev\" + СтандартноеИмяOSPX, КонечныйПутьOSPX);
УдалитьФайлы(Оскрипт + "lib\oint");
Приостановить(1000);
ЗапуститьПриложение("opm install -f """ + КонечныйПутьOSPX + """", , Истина);
Приостановить(1000);
// CLI
2025-06-27 18:38:15 +03:00
СборкаCLI = "opm b -o ""C:/Dev/"" """ + ПутьCLIP + """";
2024-10-26 09:47:17 +03:00
ЗапуститьПриложение(СборкаCLI, , Истина);
2025-06-27 18:38:15 +03:00
ПереместитьФайл("C:\Dev\" + СтандартноеИмяCLI, КонечныйПутьCLI);
УдалитьФайлы(Оскрипт + "lib\oint-cli");
Приостановить(1000);
ЗапуститьПриложение("opm install -f """ + КонечныйПутьCLI + """", , Истина);
Приостановить(1000);
2024-10-26 09:21:38 +03:00
НачальныйПутьOint = ОСкрипт + "lib\oint";
НачальныйПутьCLI = ОСкрипт + "lib\oint-cli";
КонечныйПутьOint = ".\ci\installer_set\share\oint\lib\oint";
КонечныйПутьCLI = ".\ci\installer_set\share\oint\lib\oint-cli";
ХешOint = ПолучитьСтрокуИзДвоичныхДанных(Новый ДвоичныеДанные(НачальныйПутьOint + "\.versionhash"));
ХешCli = ПолучитьСтрокуИзДвоичныхДанных(Новый ДвоичныеДанные(НачальныйПутьCLI + "\.versionhash"));
Если Не ХешOint = ХешСумма Тогда
ВызватьИсключение "Хеш сумма Oint не совпадает с основной!";
КонецЕсли;
Если Не ХешCli = ХешСумма Тогда
ВызватьИсключение "Хеш сумма CLI не совпадает с основной!";
КонецЕсли;
ЗапуститьПриложение("xcopy """ + НачальныйПутьOint + """ """ + КонечныйПутьOint + """ /e /y /i", , Истина);
ЗапуститьПриложение("xcopy """ + НачальныйПутьCLI + """ """ + КонечныйПутьCLI + """ /e /y /i", , Истина);
УдалитьФайлы(".\ci\installer_set\share\oint\lib\oint\tests");
ХешOint = ПолучитьСтрокуИзДвоичныхДанных(Новый ДвоичныеДанные(КонечныйПутьOint + "\.versionhash"));
ХешCli = ПолучитьСтрокуИзДвоичныхДанных(Новый ДвоичныеДанные(КонечныйПутьCLI + "\.versionhash"));
Если Не ХешOint = ХешСумма Тогда
ВызватьИсключение "Хеш сумма Oint не совпадает с основной!";
КонецЕсли;
Если Не ХешCli = ХешСумма Тогда
ВызватьИсключение "Хеш сумма CLI не совпадает с основной!";
КонецЕсли;
2024-09-20 20:55:48 +03:00
Сообщить("End OSPX");
2024-09-20 14:32:42 +03:00
КонецПроцедуры
Процедура СоздатьEXE(Данные)
2024-09-20 20:55:48 +03:00
Сообщить("Start EXE");
2024-09-20 14:32:42 +03:00
ПутьCLI = Данные["ПутьCLI"];
Префикс = Данные["Префикс"];
//EXE
СборкаEXE = "oscript -make """ + ПутьCLI + """ """ + ПутьВыгрузки + "oint.exe""";
ЗапуститьПриложение(СборкаEXE, , Истина);
2024-09-20 20:55:48 +03:00
Сообщить("End EXE");
2024-09-20 14:32:42 +03:00
КонецПроцедуры
Процедура СоздатьПакеты(Данные)
2024-09-20 20:55:48 +03:00
Сообщить("Start Пакеты");
2024-09-20 14:32:42 +03:00
2025-10-21 16:55:28 +03:00
ХешУстановщика = ПолучитьСтрокуИзДвоичныхДанных(Новый ДвоичныеДанные(".\ci\installer_set\share\oint\.versionhash"));
Если Не ХешУстановщика = ХешСумма Тогда
ВызватьИсключение "Хеш сумма набора установщика не совпадает с основной!";
КонецЕсли;
ТекстSh = "--name oint"
2024-09-20 15:01:48 +03:00
+ " -s dir"
+ " --license mit"
+ " --version " + Версия
+ " --architecture all"
2024-09-20 20:37:38 +03:00
+ " --description """ + Данные["Описание"] + """"
+ " --url ""https://openintegrations.dev/"""
+ " --maintainer ""Anton Titovets <bayselonarrend@gmail.com>"""
2024-09-27 11:56:32 +03:00
+ " --verbose"
+ " ../ci/installer_set/=/usr " + ПутьДвижка + "=/usr/share/oint/bin";
2024-09-20 20:37:38 +03:00
СоответствиеПакетов = Новый Соответствие();
СоответствиеПакетов.Вставить("deb", "oint_" + Версия + "_all_" + Данные["Префикс"] + ".deb");
СоответствиеПакетов.Вставить("rpm", "oint-" + Версия + "-1.noarch_" + Данные["Префикс"] + ".rpm");
2024-09-20 15:01:48 +03:00
2024-09-27 11:56:32 +03:00
СоответствиеДополнений = Новый Соответствие();
2025-03-20 12:59:33 +03:00
СоответствиеДополнений.Вставить("deb", " ");
СоответствиеДополнений.Вставить("rpm", " --rpm-os linux --depends libicu ");
2024-09-27 09:45:06 +03:00
2024-09-20 20:37:38 +03:00
Для Каждого Пакет Из СоответствиеПакетов Цикл
2024-09-20 13:38:57 +03:00
MakeSh = ПутьВыгрузки + "make" + Пакет.Ключ + ".sh";
MakeBat = ПутьВыгрузки + "make" + Пакет.Ключ + ".bat";
2024-09-27 11:33:58 +03:00
Дистрибутив = ?(Пакет.Ключ = "deb", "Ubuntu", "OracleLinux_9_1");
FPM = "chmod +x " + ПутьДвижка + "
|chmod +x ../ci/installer_set/bin/oint
2024-10-22 00:41:05 +03:00
|fpm -t " + Пакет.Ключ + " -p " + Пакет.Значение + " " + СоответствиеДополнений[Пакет.Ключ] + ТекстSh;
2024-09-20 20:37:38 +03:00
FPM = ПолучитьДвоичныеДанныеИзСтроки(FPM);
FPM.Записать(MakeSh);
2024-09-20 17:31:26 +03:00
ТекстBat = "wsl -d " + Дистрибутив + " ""./make" + Пакет.Ключ + ".sh" + """";
ТекстBat = ПолучитьДвоичныеДанныеИзСтроки(ТекстBat);
2024-09-20 20:37:38 +03:00
ТекстBat.Записать(MakeBat);
2024-09-20 15:47:43 +03:00
ЗапуститьПриложение("make" + Пакет.Ключ + ".bat", ПутьВыгрузки, Истина);
2024-09-20 19:16:22 +03:00
2024-09-20 20:37:38 +03:00
УдалитьФайлы(MakeBat);
УдалитьФайлы(MakeSh);
2024-09-20 17:31:26 +03:00
КонецЦикла;
2024-09-20 20:55:48 +03:00
Сообщить("End Пакеты");
КонецПроцедуры
Процедура СоздатьУстановщик(Данные)
2024-09-20 20:55:48 +03:00
Сообщить("Start ISS");
2024-09-20 14:32:42 +03:00
ПутьISS = Данные["ПутьISS"];
ПутьCLI = Данные["ПутьCLI"];
Префикс = Данные["Префикс"];
//Setup
ТекстISS = Новый ТекстовыйДокумент();
ТекстISS.Прочитать(ПутьISS);
Для Н = 1 По ТекстISS.КоличествоСтрок() Цикл
ТекущаяСтрока = СокрЛП(ТекстISS.ПолучитьСтроку(Н));
Если СтрНайти(ТекущаяСтрока, "#define MyAppVersion") Тогда
ТекстISS.ЗаменитьСтроку(Н, "#define MyAppVersion """ + Версия + """");
Прервать;
КонецЕсли;
2024-05-13 13:50:20 +03:00
КонецЦикла;
2024-05-13 13:50:20 +03:00
ТекстISS.Записать(ПутьISS);
2024-05-13 13:50:20 +03:00
СборкаSetup = """C:\Program Files (x86)\Inno Setup 6\Compil32.exe"" /cc """ + ПутьISS + """";
ЗапуститьПриложение(СборкаSetup, , Истина);
2025-01-10 13:04:44 +03:00
//ПереместитьФайл(ПутьВыгрузки + "oint.exe", ПутьВыгрузки + "oint_" + Префикс + ".exe");
2024-10-25 21:49:39 +03:00
2024-09-20 20:55:48 +03:00
Сообщить("End ISS");
2024-05-13 13:50:20 +03:00
КонецПроцедуры
2024-05-13 13:50:20 +03:00
2024-09-20 14:45:38 +03:00
НачалоРаботы();