2026-02-26 11:13:48 +03:00
|
|
|
#Использовать "./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-02-26 11:13:48 +03:00
|
|
|
|
2026-03-25 21:14:43 +03:00
|
|
|
КаталогАртефактов = СтрШаблон("%1/%2", КаталогСборки, Версия);
|
2026-02-26 11:13:48 +03:00
|
|
|
ОбъектАртефактов = Новый Файл(КаталогАртефактов);
|
|
|
|
|
|
|
|
|
|
Если Не ОбъектАртефактов.Существует() Тогда
|
|
|
|
|
ВызватьИсключение СтрШаблон("%1 not found", КаталогАртефактов);
|
|
|
|
|
КонецЕсли;
|
|
|
|
|
|
2026-02-26 14:14:55 +03:00
|
|
|
УдаленныйКаталог = СтрШаблон("/home/pfs/project/%1/%2", Проект, Версия);
|
2026-02-26 11:13:48 +03:00
|
|
|
|
2026-02-26 13:52:27 +03:00
|
|
|
НастройкиSFTP = OPI_SFTP.ПолучитьНастройкиПриватныйКлюч(Хост, 22, Логин, ПриватныйКлюч, ПубличныйКлюч);
|
2026-02-26 11:13:48 +03:00
|
|
|
Соединение = OPI_SFTP.ОткрытьСоединение(НастройкиSFTP);
|
|
|
|
|
|
|
|
|
|
Если Не OPI_SFTP.ЭтоКоннектор(Соединение) Тогда
|
|
|
|
|
ВызватьИсключение OPI_Инструменты.JSONСтрокой(Соединение);
|
|
|
|
|
КонецЕсли;
|
|
|
|
|
|
2026-02-26 14:14:55 +03:00
|
|
|
OPI_SFTP.СоздатьНовуюДиректорию(Соединение, УдаленныйКаталог);
|
|
|
|
|
|
2026-02-26 11:13:48 +03:00
|
|
|
МассивРасширений = Новый Массив;
|
2026-02-26 13:54:39 +03:00
|
|
|
МассивРасширений.Добавить("*.deb");
|
|
|
|
|
МассивРасширений.Добавить("*.rpm");
|
|
|
|
|
МассивРасширений.Добавить("*.exe");
|
2026-02-26 11:13:48 +03:00
|
|
|
|
|
|
|
|
ОбщийМассивФайлов = Новый Массив;
|
|
|
|
|
|
|
|
|
|
Для Каждого Расширение Из МассивРасширений Цикл
|
|
|
|
|
Для Каждого ТекущийФайл Из НайтиФайлы(КаталогАртефактов, Расширение) Цикл
|
|
|
|
|
ОбщийМассивФайлов.Добавить(ТекущийФайл);
|
|
|
|
|
КонецЦикла;
|
|
|
|
|
КонецЦикла;
|
|
|
|
|
|
|
|
|
|
КоличествоАртефактов = ОбщийМассивФайлов.Количество();
|
|
|
|
|
|
|
|
|
|
Если КоличествоАртефактов <> 6 Тогда
|
|
|
|
|
ВызватьИсключение СтрШаблон("Invalid artifacts count: %1 != 6", КоличествоАртефактов);
|
|
|
|
|
КонецЕсли;
|
|
|
|
|
|
|
|
|
|
Для Каждого ФайлЗагрузки Из ОбщийМассивФайлов Цикл
|
|
|
|
|
|
|
|
|
|
CommonTools.СообщитьПроцесс(СтрШаблон("Uploading %1...", ФайлЗагрузки.Имя));
|
|
|
|
|
|
|
|
|
|
ТекущаяЗагрузка = OPI_SFTP.ЗагрузитьФайл(Соединение
|
|
|
|
|
, ФайлЗагрузки.ПолноеИмя
|
2026-02-26 14:14:55 +03:00
|
|
|
, СтрШаблон("%1/%2", УдаленныйКаталог, ФайлЗагрузки.Имя));
|
2026-02-26 11:13:48 +03:00
|
|
|
|
|
|
|
|
CommonTools.СообщитьПроцесс(OPI_Инструменты.JSONСтрокой(ТекущаяЗагрузка));
|
|
|
|
|
|
|
|
|
|
Если Не ТекущаяЗагрузка["result"] Тогда
|
|
|
|
|
ВызватьИсключение "Uploading failed!";
|
|
|
|
|
КонецЕсли;
|
2026-02-26 13:45:18 +03:00
|
|
|
|
2026-02-26 11:13:48 +03:00
|
|
|
КонецЦикла;
|
|
|
|
|
|
|
|
|
|
КонецПроцедуры
|