it-brains/laravel-release-scripts

Laravel 发布脚本,易于设置一次性执行脚本,这些脚本将在部署脚本运行期间执行。

v0.1.11 2024-05-03 21:25 UTC

This package is auto-updated.

Last update: 2024-09-03 22:32:31 UTC


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' 选项。