This small package is designed to help you make easy changes in your production environment. In short: it is a slightly modified Laravel Migrator in order to run single commands files. Perhaps you are wondering for what purpose?
Probably during the maintenance of an application written in Laravel, you encountered the need to make changes in your production environment. For example, copying files to a separate directory or adding new data to the database. How did you do it so far?
You probably used one of the two methods:
- You or one of the teams created a command which then had to be executed on the server. However this raises one serious problem. You must remember to run them. It's easy if deploy is about to take place soon and there are few commands. But as you probably already know it is easy to forget about it when there are many commands to run and deploy will take place in some distant time.
- You have made changes in migration files. However this also raises problems. The code responsible for changes in the database is mixed with the code responsible for other changes. In addition it should be remembered that these changes will be started every time the database is refreshed which increase migration and development time.
The solution I created allows you to easily create commands that will run only once and exactly where you need them. You can easly integrate thmen to your Continuous Delivery process and forget about running changes yourself.
- Install the package via Composer:
composer require daverdalas/laravel-post-deploy-commands
The package will automatically register itself with Laravel 5.5+. For older versions of Laravel or Lumen register ServiceProvider:
DaverDalas\LaravelPostDeployCommands\ServiceProvider::class
Create new command file. The file will be saved in database/commands directory.
php artisan make:deploy-command your_command_name
This will generate a command file TIMESTAMP_your_command_name.php
in the dabase/commands
directory.
<?php
use Illuminate\Console\Command;
class YourCommandName extends Command
{
/**
* Execute the console command.
*
* @return void
*/
public function handle()
{
// $this->info('Command message');
}
}
You can freely edit file at your discretion :)
Available options:
--path=
The location where the command file should be created.
Run new commands (Those which have not been started before).
php artisan deploy-commands:run
Available options:
--pretend
Dump the SQL queries that would be run.
--path=
The path of commands files to be executed. E.g. --path=/commands/
.
Mark all completed
php artisan deploy-commands:mark-all-completed
Mark all pending commands as completed. Useful in debuging or local development.
- clean code
- write some tests
NOTE: The code used to create this package was based on the Laravel code. That is why all the contributions for its creation belong to the creators of Laravel. It was only modified for the purpose of this package.