1.- Actualizar la base de datos
2.- Actualizar el código en Desarrollo (local)
3.- Actualizar el código en Producción
Para que estas tareas sean mucho más sencillas Symfony viene con comandos de consola muy prácticos, que ejecutan procesos y nos facilitan la tarea. Pero siempre se tienen que ejecuta en forma secuencial, demandando memorizar el flujo y ejecutarlo cada vez que lo necesitemos.
Para esto vamos a crear 3 comandos de consola personalizados que ejecuten en forma secuencial las tareas a realizar.
1.- Actualizar la base de datos:
namespace Petramas\MainBundle\Command; use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; class DatabaseUpdateCommand extends ContainerAwareCommand { protected $route; public function __construct() { parent::__construct(); $this->route = 'cd ' . __DIR__ . '/../../../../;php app/console '; } protected function configure() { $this->setName('database:update') ->setDescription('Delete and reconstruct database.') ; } protected function execute(InputInterface $input, OutputInterface $output) { $output->write('Dropping database >> '); $output->writeln(shell_exec($this->route . 'doctrine:database:drop --force')); $output->write('Creating database >> '); $output->writeln(shell_exec($this->route . 'doctrine:database:create')); $output->write('Creating schema >> '); $output->writeln(shell_exec($this->route . 'doctrine:schema:create')); $output->write('Loading fixtures >> '); $output->writeln(shell_exec($this->route . 'doctrine:fixtures:load -n')); $output->writeln('Finished successfully. '); } }
2.- Actualizar el código en Desarrollo (local)
namespace Petramas\MainBundle\Command; use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; class DevelopmentUpdateCommand extends ContainerAwareCommand { protected $route; public function __construct() { parent::__construct(); $this->route = 'cd ' . __DIR__ . '/../../../../;php app/console '; } protected function configure() { $this->setName('dev:up') ->setDescription('Development update.') ; } protected function execute(InputInterface $input, OutputInterface $output) { $output->write('Pulling from git repository >> '); $output->writeln(shell_exec('cd ' . __DIR__ . '/../../../../;git pull')); $output->write('Installing assets >> '); $output->writeln(shell_exec($this->route . 'assets:install web --symlink')); $output->write('Updating schema >> '); $output->writeln(shell_exec($this->route . 'doctrine:schema:update --force')); $output->write('Clearing cache >> '); $output->writeln(shell_exec($this->route . 'cache:clear')); $output->writeln('Finished successfully. '); } }
3.- Actualizar el código en Producción
namespace Petramas\MainBundle\Command; use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; class ProductionUpdateCommand extends ContainerAwareCommand { protected $route; public function __construct() { parent::__construct(); $this->route = 'cd ' . __DIR__ . '/../../../../;php app/console '; } protected function configure() { $this->setName('prod:up') ->setDescription('Move to production.') ; } protected function execute(InputInterface $input, OutputInterface $output) { $output->write('Pulling from git repository >> '); $output->writeln(shell_exec('cd ' . __DIR__ . '/../../../../;git pull')); $output->write('Installing assets >> '); $output->writeln(shell_exec($this->route . 'assets:install web --symlink')); $output->write('Updating schema >> '); $output->writeln(shell_exec($this->route . 'doctrine:schema:update --force')); $output->write('Dumping assets >> '); $output->writeln(shell_exec($this->route . 'assetic:dump web --env=prod')); $output->write('Clearing cache >> '); $output->writeln(shell_exec($this->route . 'cache:clear --env=prod')); $output->writeln('Finished successfully. '); } }
No hay comentarios.:
Publicar un comentario
Puedes comentar como te gustaría que comenten de ti.