it-brains / laravel-release-scripts
Laravel 发布脚本,易于设置一次性执行脚本,这些脚本将在部署脚本运行期间执行。
v0.1.11
2024-05-03 21:25 UTC
Requires
- php: >=7.1
- illuminate/console: ^5.5|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- illuminate/database: ^5.5|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- illuminate/filesystem: ^5.5|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- illuminate/support: ^5.5|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
README
此包允许创建一次性执行脚本。当需要进行一些更改并需要运行额外的命令时(例如,在实现新功能时需要向应用程序添加新角色),这应该很有用。
安装
使用以下命令通过 composer 安装此包:
composer require it-brains/laravel-release-scripts
如何使用
步骤 1. 创建一个新的发布脚本
php artisan make:release-script add_manage_role
On './database/scripts' path will be create a class in migration format with 'run' method. The file can look like:
<?php use ITBrains\ReleaseScript\ScriptInterface; class AddManagerRole implements ScriptInterface { /** * Run the script. * * @return void */ public function run() { \App\Role::create(['title' => 'Manager']); } }
步骤 2. 在您的服务器部署脚本中编辑 - 将迁移命令(php artisan migrate --force)替换为发布脚本运行命令
...
php artisan release-script:run --force --migrate
...
注意:使用 '--migrate' 选项,'migrate' 命令将在所有发布脚本之前运行。
重要提示
-
如果您计划运行需要确认的命令(通常在生产环境模式下进行),请不要忘记设置一个选项以防止它。例如,为运行种子命令设置 '--force' 选项:
Artisan::call('db:seed', ['--class' => SettingsTableSeeder::class, '--force' => true]);
-
如果您计划运行带有
--class
选项的命令,例如:php artisan release-script:run --class=AddManagerRole
,您需要将 "scripts" 目录添加到 composer 类映射
... "autoload": { "classmap": [ "database/seeds", "database/scripts", "database/factories" ], "psr-4": { "App\\": "app/" } }, ...
可用命令
php artisan make:release-script
php artisan release-script:run
php artisan release-script:status
可能的待办事项
- 测试
- 添加一个全新的命令,该命令将删除数据库中的所有脚本并重新运行
- 可能需要将创建 'scripts' 表移到迁移中,因为我们如何知道当开发人员运行 'php artisan migrate:refresh --seed' 时需要重新加载所有脚本 - 除了脚本之外的所有内容都将刷新!然后真正可能需要扩展迁移命令以添加 '--scripts' 选项。