SuperAPI AI 工具集

unopim-install-upgrade

部署与运维

查看项目

更新于 10-16 06:43

技能介绍

UnoPim Install & Upgrade 是 UnoPim 的安装与升级技能,代码位于 packages/Webkul/Installer。unopim:install 从零构建空数据库;unopim:upgrade 推进有数据的线上库。插件没有独立的“升级步骤”API:升级实际执行的是 migrate --force,因此某个包的升级步骤就是该包内的一个迁移,外加 packages/Webkul/Installer/src/Config/upgrade.php 中的发布元数据。

选择命令:空数据库用 unopim:install;任何已有数据用 unopim:upgrade。CLI 路径下 unopim:install 会执行 migrate:fresh 且不做已安装检查,会删除所有表,不可当作修复手段。Docker 上升级在一次性容器中运行:docker compose run --rm app php artisan unopim:upgrade。

数据库变更拆分:模式迁移(列、可空或默认值)带可逆 down();索引迁移用 Schema::hasIndex 守卫并单独成文件;数据迁移用 DB::table()->chunkById() 按块批量写、幂等、down() 为空操作。文件必须放在拥有该迁移的包,即其 provider 传给 loadMigrationsFrom() 的目录,放在别处升级时不会执行。不可逆或耗时迁移需加入 upgrade.php 的 irreversible_migrations 与 sizing_tables。触及索引字段的 DB::table() 写入会绕过模型观察者,需在发布说明中声明重建索引。

注意事项:安装器路由不是后台路由,按设计未认证,由 DatabaseManager::canConfirmNotInstalled()/isInstalled() 在控制器中把关(失败即关闭)。安装标记有两个:storage/installed(临时)与 core_config 的 installer.installed(持久)。驱动名有 mysql、mariadb、pgsql 三种,未知驱动备份会直接抛错。upgrade 配置为浅合并,覆盖某个列表时需复制完整默认列表。升级运行 queue:restart,长驻 Octane worker 还需 octane:reload,命令不会自动执行。有活跃任务的实例会阻塞预检。

验证:在 packages/Webkul/Installer/tests/Feature/ 的相关测试中扩展用例;数据迁移需测试播种旧数据并运行两次;在 MySQL 与 PostgreSQL 上跑测试套件,MariaDB 无矩阵需人工审查驱动分支;字符串变更后运行 php artisan unopim:translations:check --package=Installer。演练用 unopim:upgrade --dry-run 对真实数据副本执行。