Версионирование

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
TopClans
Сообщения: 23
Зарегистрирован: 2019.04.27, 10:44

Версионирование

Сообщение TopClans »

Всем привет.
Хочу сделать SaaS (Sowtware as a Service) на базе yii2. Точнее сказать, уже делаю.
Дошёл до вопроса версионирования: в Yii2 уже есть какая-то заготовка для этого, или лучше писать самому?
Ну и попутно может подскажете, как лучше реализовать функцию обновления файлов сайта? опыта в этом нет, но мне кажется что нужно держать где-то "полуфабрикатную" версию файлов сайта, без файла конфига. в нужный момент запускать скрипт, который скачает на сервер "полуфабрикат" и распакует его, таким образом обновив файлы. а как быть с базой данных? что, если нужно добавить новые таблицы, столбцы в них? есть ли какое-то готовое решение, чтобы "скормить" скрипту эталонную таблицу, а скрипт дополнит текущую таблицу до эталонной - естественно, без потери данных?

Аватара пользователя
proctoleha
Сообщения: 279
Зарегистрирован: 2016.07.10, 19:00

Re: Версионирование

Сообщение proctoleha »

TopClans писал(а):
2019.09.25, 01:14
...как лучше реализовать функцию обновления файлов сайта? опыта в этом нет, но мне кажется что нужно держать где-то "полуфабрикатную" версию файлов сайта, без файла конфига. в нужный момент запускать скрипт, который скачает на сервер "полуфабрикат" и распакует его, таким образом обновив файлы. ...
Учим GIT
TopClans писал(а):
2019.09.25, 01:14
...
...а как быть с базой данных? что, если нужно добавить новые таблицы, столбцы в них? есть ли какое-то готовое решение, чтобы "скормить" скрипту эталонную таблицу, а скрипт дополнит текущую таблицу до эталонной - естественно, без потери данных?...
Откройте для себя миграции: https://yiiframework.com.ua/ru/doc/guid ... igrations/
Вот за что я не люблю линукс, так это за свои кривые, временами, руки

TopClans
Сообщения: 23
Зарегистрирован: 2019.04.27, 10:44

Re: Версионирование

Сообщение TopClans »

спасибо, git оказался проще чем я думал. и удобней)
раз уж на то пошло, то может кто-нибудь подскажет, как лучше реализовать запуск обновления через сам сайт? по сути нужно запустить код который перейдёт в директорию с сайтом и запустит git pull. а в идеале - дождаться окончания git pull и запустить php скрипт для того чтобы отправить комет в браузер клиента и там обновилась страничка.
я, к сожалению, не сильно с этой областью - можно это делать через PHP и exec, или для работы с командной строкой нужно что-то другое? может на питоне там скрипт какой-то написать

yiiliveext
Сообщения: 909
Зарегистрирован: 2019.08.13, 01:49

Re: Версионирование

Сообщение yiiliveext »

https://gist.github.com/noelboss/3fe139 ... 2e9066f2fa
Не забудьте, что еще надо выполнять composer install

Аватара пользователя
xoma
Сообщения: 641
Зарегистрирован: 2009.04.02, 15:24
Откуда: Ногинск
Контактная информация:

Re: Версионирование

Сообщение xoma »

TopClans писал(а):
2019.09.27, 14:58
спасибо, git оказался проще чем я думал. и удобней)
раз уж на то пошло, то может кто-нибудь подскажет, как лучше реализовать запуск обновления через сам сайт? по сути нужно запустить код который перейдёт в директорию с сайтом и запустит git pull. а в идеале - дождаться окончания git pull и запустить php скрипт для того чтобы отправить комет в браузер клиента и там обновилась страничка.
я, к сожалению, не сильно с этой областью - можно это делать через PHP и exec, или для работы с командной строкой нужно что-то другое? может на питоне там скрипт какой-то написать
https://robo.li/

TopClans
Сообщения: 23
Зарегистрирован: 2019.04.27, 10:44

Re: Версионирование

Сообщение TopClans »

сделал по-колхозному:

Код: Выделить всё

Class MyController extends AppController
{
	public function actionIndex()
	{
		function cidr_match($ip, $ranges)
		{
			$ranges = (array)$ranges;
			foreach($ranges as $range) {
				list($subnet, $mask) = explode('/', $range);
				if((ip2long($ip) & ~((1 << (32 - $mask)) - 1)) == ip2long($subnet)) {
					return true;
				}
			}
			return false;
		}
		$github_ips = array('207.97.227.253', '50.57.128.197', '108.171.174.178', '50.57.231.61');
		$github_cidrs = array('204.232.175.64/27', '192.30.252.0/22');
		if(in_array($_SERVER['REMOTE_ADDR'], $github_ips) || cidr_match($_SERVER['REMOTE_ADDR'], $github_cidrs)) {
			$dir = Yii::getAlias('@app');
			exec('cd '.$dir.' && git pull https://<login>:<pass>@<repo> <brunch> 2>&1'); //хранить пароль в открытом виде в коде - очень тупо!
		}
		else {
			header('HTTP/1.1 404 Not Found');
			echo '404 Not Found.';
			exit;
		}
	}
}

Ответить