Добрый день.
Задумываюсь над тем, чтобы вести свой форк и обновляться на проде именно с него. Заодно и делиться станет удобнее, если что-то полезное запилю.
Не до конца понимаю, как работает обновление. Судя по самому алгоритму, создаётся ощущение, что сравнивается текущее состояние с целевым и скрипт приводит файлы к целевому. На вид некое подобие git по своей сути. Но в коде видел, что скрипт идёт на веб url, получает номер текущей версии и качает архив с релизом.
Вот главный вопрос. Если Вы выпустили релиз (есть архив для скачивания), то он уже неизменен? Просто видел в ветках некоторых обновлений предложение обновиться повторно, т.к. что-то подправили там после первого релиза.
Второй вопрос. Что нужно кроме своего репозитория git, чтоб обновляться со своего форка?
И последний. А можно ли обновляться прям из git ? В стиле git pull и применение патчей. Я на самом деле попробовал, но у меня не взлетело. Но оно у меня и из релизов не взлетает пока, т.к. пропустил несколько версий и ещё тащу это на свежий ubuntu.
Кстати, насчёт ubuntu. С openssl 3.0.x возникли особенности в работе криптования. Могу рассказать, если ещё не сталкивались (тут или в отдельной ветке).
Заранее, большое спасибо за помощь и Ваш труд. Думаю, Вы для многих челевек-легенда. Я в середине нулевых в основном только по Вашим статьям вполне неплохо освоил freebsd.
Как работает система релизов и обновлений?
Как работает система релизов и обновлений?
sasha181 писал(а):Источник цитаты Если Вы выпустили релиз (есть архив для скачивания), то он уже неизменен?
нет. вполне возможно, что будут испаравления не меняя версии.
затем и просил принудительно обновится
так-то, в прошлом году, я на каждый коммит в релиз изменения заливал, когда активно фронт пилился
а версию не менял
sasha181 писал(а):Источник цитаты Второй вопрос. Что нужно кроме своего репозитория git, чтоб обновляться со своего форка?
указать свой сервер, настроить чтобы он отдавал файлы/списки файлов
sasha181 писал(а):Источник цитаты А можно ли обновляться прям из git ? В стиле git pull и применение патчей.
а патчи как накатывать?
т.е. состояние файлов вы сделаете, но всё равно надо 3 стадию из интерейса чтобы патчи к БД накатились и файловые
и смысл непонятен... если у вас есть парвки - присылайте, решаемо в общем-то
если что-то своё - ну пилить уже под ногами не трогая основную ветку и не обновляясь
на ёлку влезть и не ободраться - очень тяжело будет =)
sasha181 писал(а):Источник цитаты Кстати, насчёт ubuntu. С openssl 3.0.x возникли особенности в работе криптования. Могу рассказать, если ещё не сталкивались (тут или в отдельной ветке).
на какой версии биллинга? я обновлял шифрование недавно совсем
Отправлено спустя 9 минут 3 секунды:
sasha181 писал(а):Источник цитаты Заранее, большое спасибо за помощь и Ваш труд. Думаю, Вы для многих челевек-легенда. Я в середине нулевых в основном только по Вашим статьям вполне неплохо освоил freebsd.
да незачто. щас писать нечего - всё в интернетах есть =)
Убей их всех! Бог потом рассортирует...
-
sasha181
- Сообщения: 138
- Зарегистрирован: 2012-02-27 15:58:24
- Откуда: Краснодар/Саранск
- Контактная информация:
Как работает система релизов и обновлений?
Alex Keda писал(а):Источник цитаты так-то, в прошлом году, я на каждый коммит в релиз изменения заливал, когда активно фронт пилился
а версию не менял
Т.е. всё-таки биллинг при обновлении тянет текущую версию из ветки master в git. Просто делает это не средствами git, а своими методами. Правильно понял?
Alex Keda писал(а):Источник цитаты а патчи как накатывать?
Просто, будучи авторизованным как админ перед обновлением файлов, открыть https://bill.example.com/Patches
Так работает. Я вчера весь день обновлял так на разные версии. Текущая у меня 2.6.16. Пробовал и пошагово обновиться, и сразу до 2.7.0. Пока правда не добрался до победного. Там ещё предстоит написать патчи для миграции тарифов vps и хостинга. На vps у меня много индивидуальных, а на хостинге вообще 500 тарифов с шагом лимита в 1 веб-домен.
Alex Keda писал(а):Источник цитаты и смысл непонятен... если у вас есть парвки - присылайте, решаемо в общем-то
1. удобнее будет делиться правками, если сам их начну с git загонять, а не на коленке пилить
2. вот мне нужно например подправить патч обновления для миграции тарифов. Я его отдельной веткой на тестовом окружении написал, закоммитил, слил с мастером, обновил биллинг из своей ветки мастер. Тоже удобно. Если код пригоден для остальных, прислал пулл реквест Вам.
3. ну и некоторые моменты я только у себя переделал, которые другим скорее всего не интересны. Чуть переписал core/load.php . Заменил там eval на requere и ещё обернул в vqmod . Всякие правки в веб интерфейсе типа убрать лишние кнопки у пользователей чтоб не путались делал там. Местами есть ощущение, что просто закоммитить что-то в git было бы правильней.
4. Система переопределения классов в биллинге конечно работает. Я чуть переделывал под себя логику заведения пользователей в ispmanager (другим это точно не понадобится). Но вот переносить потом обновления класса ispmanager приходится руками. Мерджить через git это было бы удобнее.
Alex Keda писал(а):Источник цитаты на ёлку влезть и не ободраться - очень тяжело будет =)
Есть надежда, что урон от ободраться будет меньше чем от рутины ручных правок при обновлениях. )
Alex Keda писал(а):Источник цитаты на какой версии биллинга? я обновлял шифрование недавно совсем
Там не от версии биллинга зависит, а от версии openssl (у меня в ubuntu 22.04 она такая OpenSSL 3.0.2 15).
Ловил ошибку после обновления до 2.6.18 в Crypt.php
Код: Выделить всё
if(!$String = @OpenSSL_Decrypt($String,'des-ecb',$Key,OPENSSL_RAW_DATA | OPENSSL_NO_PADDING)){
Debug(print_r($String));
return ERROR | @Trigger_Error('[Crypt_Decode]: не удалось дешифровать данные');
}Функция декриптования возвращала false
Отловил причины вот так:
Код: Выделить всё
while ($msg = openssl_error_string()) {
echo "OpenSSL Error: " . $msg;
}Сейчас текстов ошибок под рукой нет. Скармливал их дипсику. Причины оказалось две:
1. openssl 3.0 не поддерживает по умолчанию старые алгоритмы шифрования. Нужно включать поддержку legacy алгоритмов. Лучше делать отдельны конфиг openssl для php. Если включить легаси глобально, могут поломаться другие сервисы типа nginx, dovecot и т.п.
2. openssl 3.0 более строг к длине ключа. Для des-ecb он должен быть 8 бит. У меня строка длиннее. Укоротил до 8 символов, стало работать. Пока ещё предстоит дальше разобраться, т.к. при смене алгоритма на aes ожидаю, что могут быть тоже ньюансы с openssl 3.0 в плане длине ключа. Скорее всего верну длинный ключ и добавлю в старые методы обрезание его до 8 символов.
Как работает система релизов и обновлений?
sasha181 писал(а):Источник цитаты Т.е. всё-таки биллинг при обновлении тянет текущую версию из ветки master в git. Просто делает это не средствами git, а своими методами. Правильно понял?
версию которая задеплоена на сайт, да
sasha181 писал(а):Источник цитаты а на хостинге вообще 500 тарифов с шагом лимита в 1 веб-домен.
кстати, а как оно на таком количестве работает? были мысли для ВПС что-то подобное сделать, но подумал что тупить будет...
и я понял проблему, да, я забил на миграцию когда лимиты переносил из таблицы тарифа в Params
посчитал что никто не пользуется, а лично мне полтора десятков тарифных планов проще протыкать было чем писать мигратор полноценный....
вы бы хоть тут появлялись чтото писали =)
sasha181 писал(а):Источник цитаты Всякие правки в веб интерфейсе типа убрать лишние кнопки у пользователей чтоб не путались делал там
дык, старый уже почти всё... новый интерфейс у юзеров
sasha181 писал(а):Источник цитаты Но вот переносить потом обновления класса ispmanager приходится руками.
ну, вы можете свой класс разместить в
Код: Выделить всё
./hosts/ИМЯ.ВАШЕГО.САЙТА/system/libs/IspManager5.phpи дописывать что-то что появилось в обновлённой версии основной
sasha181 писал(а):Источник цитаты 1. openssl 3.0 не поддерживает по умолчанию старые алгоритмы шифрования. Нужно включать поддержку legacy алгоритмов.
да, это я переписал. в январе ещё. и на нормальный мигратор не поленился - т.к. паролей много +)
Убей их всех! Бог потом рассортирует...
-
sasha181
- Сообщения: 138
- Зарегистрирован: 2012-02-27 15:58:24
- Откуда: Краснодар/Саранск
- Контактная информация:
Как работает система релизов и обновлений?
Alex Keda писал(а):Источник цитаты кстати, а как оно на таком количестве работает?
Кнопка смены тарифа очень долго открывается. Секунд 15 ajax запрос ждёт ответа. Но аффектит это только на группу пользователей, которым доступны эти 500 тарифов (у меня это веб-студии, которые реселлингом занимаются). У обычных пользователей быстро работает.
Других проблем не выявил. Лет 8 точно уже так работает.
Alex Keda писал(а):Источник цитаты ну, вы можете свой класс разместить в
./hosts/ИМЯ.ВАШЕГО.САЙТА/system/libs/IspManager5.php
Сейчас так и делаю. Хочу научиться работать с git хотя бы "на ты" ). Думаю, если правильно с ним работать, долно быть гораздо эффективней, чем руками перетаскивать в свою папку hosts изменения.
Alex Keda писал(а):Источник цитаты вы бы хоть тут появлялись чтото писали =)
Постараюсь исправиться )
Альтернативы Вашему биллингу не вижу. Не нашёл в 2012м, когда начинал. Не вижу и сейчас. Поэтому точно никуда не денусь )
Как работает система релизов и обновлений?
sasha181 писал(а):Источник цитаты Секунд 15 ajax запрос ждёт ответа
надо дебаг смотреть, на чём тупит
впрочем, подозреваю на приведении типов.
я такое видел у клиента с 400+ доменами. что делать пока не придумал
Убей их всех! Бог потом рассортирует...
-
sasha181
- Сообщения: 138
- Зарегистрирован: 2012-02-27 15:58:24
- Откуда: Краснодар/Саранск
- Контактная информация:
Как работает система релизов и обновлений?
Я тут попробовал чуть переделать /hosts/root/comp/www/Patches.comp.php , чтоб хранил версии применённых патчей файлов там же где и LastPatchDB (в базе данных). А то у меня оказалось вчера масса проблем из-за путанницы с этими версиями происходила.
Вроде нормально получилось. Если в БД нет, пробуем взять из файла, вставляем в БД, удаляем файлик и дальше применяем патчи, сохраняя номера уже в базу данных.
Обновление с 2.6.16 до версии из гита наконец отработало без ошибок с первого раза. )
Ну и вроде логично хранить эти версии единообразно. Прислать?
Вроде нормально получилось. Если в БД нет, пробуем взять из файла, вставляем в БД, удаляем файлик и дальше применяем патчи, сохраняя номера уже в базу данных.
Обновление с 2.6.16 до версии из гита наконец отработало без ошибок с первого раза. )
Ну и вроде логично хранить эти версии единообразно. Прислать?
Как работает система релизов и обновлений?
ну пришлите
только логично как раз в ФС, раз патчи файловые =)
Отправлено спустя 1 минуту 55 секунд:
там по хорошему надо отказаться от разделения hosting/billing
оно всё в одну взаимосвязанную структуру слилось давно, а разделение всё ещё есть
только логично как раз в ФС, раз патчи файловые =)
Отправлено спустя 1 минуту 55 секунд:
там по хорошему надо отказаться от разделения hosting/billing
оно всё в одну взаимосвязанную структуру слилось давно, а разделение всё ещё есть
Убей их всех! Бог потом рассортирует...
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей
