andrew-a / laravel-selfupdater
为您的自托管Laravel应用程序提供自动更新功能。
Requires
- php: >=7.0
- ext-zip: *
- guzzlehttp/guzzle: 6.*
- illuminate/support: 5.*
Requires (Dev)
- mockery/mockery: ^0.9.5
- orchestra/testbench: 3.2.*
- phpunit/phpunit: ^5.5
This package is auto-updated.
Last update: 2024-09-08 07:28:13 UTC
README
本软件包为Laravel 5应用程序提供了一些基本方法,以实现自我更新功能。已经内置了一些通过GitHub提供自我更新机制的方法。
通常,当您分发需要更新机制的自托管Laravel应用程序时,您需要这个软件包,因为您不想让您的用户烦恼于Git和/或Composer命令;
使用Composer安装
目前有两个分支
master:兼容PHP 7.x5.x:兼容PHP 5.5 + 5.6
请根据您的PHP版本选择正确的分支。
使用Composer从master分支安装最新版本
$ composer require codedge/laravel-selfupdater
这将把codedge/laravel-selfupdater软件包添加到您的composer.json文件,并下载项目。
您需要将服务提供者在您的config/app.php文件中包含进去,并且可选地包含facade [2]
// config/app.php return [ //... 'providers' => [ // ... Codedge\Updater\UpdaterServiceProvider::class, // [1] ], // ... 'aliases' => [ // ... 'Updater' => Codedge\Updater\UpdaterManager::class, // [2] ]
此外,将监听器添加到您的app/Providers/EventServiceProvider.php
// app/Providers/EventServiceProvider.php /** * The event handler mappings for the application. * * @var array */ protected $listen = [ // ... \Codedge\Updater\Events\UpdateAvailable::class => [ \Codedge\Updater\Listeners\SendUpdateAvailableNotification::class ], \Codedge\Updater\Events\UpdateSucceeded::class => [ \Codedge\Updater\Listeners\SendUpdateSucceededNotification::class ], ];
配置
安装软件包后,您需要通过以下方式发布配置文件
$ php artisan vendor:publish --provider="Codedge\Updater\UpdaterServiceProvider"
注意:如果您想使用GitHub作为更新源,请确保在您的config/self-updater.php文件中输入正确的vendor和repository名称。
运行Artisan命令
可以在更新过程前后运行Artisan命令,并可以在config/self-updater.php中配置。
示例
'artisan_commands' => [ 'pre_update' => [ 'updater:prepare' => [ 'class' => \App\Console\Commands\PreUpdateTasks::class, 'params' => [] ], ], 'post_update' => [ 'postupdate:cleanup' => [ 'class' => \App\Console\Commands\PostUpdateCleanup::class, 'params' => [ 'log' => 1, 'reset' => false, // etc. ] ] ] ]
通过电子邮件发送通知
您需要指定一个收件人电子邮件地址和一个收件人姓名,以接收更新可用通知。您可以通过将SELF_UPDATER_MAILTO_NAME和SELF_UPDATER_MAILTO_ADDRESS添加到您的.env文件中来指定这些值。
使用方法
要启动更新过程,例如在一个控制器中,只需使用
public function update() { // This downloads and install the latest version of your repo Updater::update(); // Just download the source and do the actual update elsewhere Updater::fetch(); // Check if a new version is available and pass current version Updater::isNewVersionAvailable('1.2'); }
当然,您可以通过方法注入来注入updater
public function update(UpdaterManager $updater) { $updater->update(); // Same as above // .. and shorthand for this: $updater->source()->update; $updater->fetch() // Same as above... }
注意:目前,源获取是一个同步过程。它不在后台运行。
使用GitHub
该软件包附带一个Github源存储库类型,用于从GitHub获取发布内容 - 实际上是通过GitHub拉取您的软件的最新版本。
只需确保在您的config/self-updater.php文件中设置了正确的存储库。
扩展和添加新的源存储库类型
如果您想从其他地方拉取新版本,请随时创建自己的源存储库类型,但请注意,对于新的源存储库类型
- 它必须扩展AbstractRepositoryType
- 它必须实现SourceRepositoryTypeContract
因此,完美的类头看起来像这样
class BitbucketRepositoryType extends AbstractRepositoryType implements SourceRepositoryTypeContract
之后,您可以创建自己的服务提供者,例如BitbucketUpdaterServiceProvider,其boot方法如下
public function boot() { Updater::extend('bitbucket', function($app) { return Updater::sourceRepository(new BitbucketRepositoryType); }); }
现在您可以通过以下方式调用您自己的更新源
public function update(UpdaterManager $updater) { $updater->source('bitbucket')->update(); }
贡献
请参阅贡献指南。
路线图
这是一份快速绘制的路线图,其中列出了还需要实现的内容。
许可
MIT 许可证 (MIT)。更多信息请参阅 许可证文件。