Files
OpenIntegrations/ci/os/internal/Classes/SourceForgeUploader.os
T

74 lines
4.2 KiB
Plaintext
Raw Normal View History

#Использовать "./internal"
#Использовать "../../../../src/ru/OInt/api/sftp"
#Использовать "../../../../src/ru/OInt/tools/main"
Процедура ПриСозданииОбъекта(Знач ДанныеПроекта_ = Неопределено, Знач Язык = "ru")
Если ДанныеПроекта_ = Неопределено Тогда
ДанныеПроекта = Новый ProjectData;
Иначе
ДанныеПроекта = ДанныеПроекта_;
КонецЕсли;
Версия = ДанныеПроекта.ПолучитьЗначениеНастройки("primary.version");
КаталогСборки = ДанныеПроекта.ПолучитьЗначениеНастройки("local.releaseWorkspace");
Логин = ДанныеПроекта.ПолучитьЗначениеНастройки("sourceforge.login");
Проект = ДанныеПроекта.ПолучитьЗначениеНастройки("sourceforge.projectName");
Хост = ДанныеПроекта.ПолучитьЗначениеНастройки("sourceforge.hostUrl");
2026-02-26 13:50:10 +03:00
ПриватныйКлюч = ДанныеПроекта.ПолучитьЗначениеНастройки("sourceforge.privateKey");
ПубличныйКлюч = ДанныеПроекта.ПолучитьЗначениеНастройки("sourceforge.publicKey");
2026-03-25 21:14:43 +03:00
КаталогАртефактов = СтрШаблон("%1/%2", КаталогСборки, Версия);
ОбъектАртефактов = Новый Файл(КаталогАртефактов);
Если Не ОбъектАртефактов.Существует() Тогда
ВызватьИсключение СтрШаблон("%1 not found", КаталогАртефактов);
КонецЕсли;
УдаленныйКаталог = СтрШаблон("/home/pfs/project/%1/%2", Проект, Версия);
2026-02-26 13:52:27 +03:00
НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиПриватныйКлюч(Хост, 22, Логин, ПриватныйКлюч, ПубличныйКлюч);
Соединение = OPI_SFTP.ОткрытьСоединение(НастройкиSFTP);
Если Не OPI_SFTP.ЭтоКоннектор(Соединение) Тогда
ВызватьИсключение OPI_Инструменты.JSONСтрокой(Соединение);
КонецЕсли;
OPI_SFTP.СоздатьНовуюДиректорию(Соединение, УдаленныйКаталог);
МассивРасширений = Новый Массив;
2026-02-26 13:54:39 +03:00
МассивРасширений.Добавить("*.deb");
МассивРасширений.Добавить("*.rpm");
МассивРасширений.Добавить("*.exe");
ОбщийМассивФайлов = Новый Массив;
Для Каждого Расширение Из МассивРасширений Цикл
Для Каждого ТекущийФайл Из НайтиФайлы(КаталогАртефактов, Расширение) Цикл
ОбщийМассивФайлов.Добавить(ТекущийФайл);
КонецЦикла;
КонецЦикла;
КоличествоАртефактов = ОбщийМассивФайлов.Количество();
Если КоличествоАртефактов <> 6 Тогда
ВызватьИсключение СтрШаблон("Invalid artifacts count: %1 != 6", КоличествоАртефактов);
КонецЕсли;
Для Каждого ФайлЗагрузки Из ОбщийМассивФайлов Цикл
CommonTools.СообщитьПроцесс(СтрШаблон("Uploading %1...", ФайлЗагрузки.Имя));
ТекущаяЗагрузка = OPI_SFTP.ЗагрузитьФайл(Соединение
, ФайлЗагрузки.ПолноеИмя
, СтрШаблон("%1/%2", УдаленныйКаталог, ФайлЗагрузки.Имя));
CommonTools.СообщитьПроцесс(OPI_Инструменты.JSONСтрокой(ТекущаяЗагрузка));
Если Не ТекущаяЗагрузка["result"] Тогда
ВызватьИсключение "Uploading failed!";
КонецЕсли;
КонецЦикла;
КонецПроцедуры