muyaedward/wbapp-updater

为您的自托管Laravel应用程序提供自动更新功能。

0.12.6 2018-12-10 07:27 UTC

This package is not auto-updated.

Last update: 2024-09-25 10:23:53 UTC


README

Latest Stable Version Total Downloads Build Status StyleCI codecov

此软件包提供了一些基本方法,以实现您的Laravel 5应用程序的自更新功能。已包含通过GitHub提供自更新机制的方法。

通常在分发需要一些更新机制的自托管Laravel应用程序时需要此功能,因为您不希望用Git和/或Composer命令麻烦您的用户 ;-)

使用Composer安装

目前有两个分支

  • master:兼容PHP 7.x
  • 5.x:兼容PHP 5.5 + 5.6

请根据您的PHP版本选择正确的分支。

使用Composer从master安装最新版本

$ composer require codedge/laravel-selfupdater

这将把codedge/laravel-selfupdater软件包添加到您的composer.json文件中,并下载项目。

您需要在config/app.php文件中包含服务提供者[1],并可选地包含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文件中输入正确的供应商和存储库名称。

运行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.
            ]
        ]
    ]
]

通过电子邮件发送通知

您需要指定一个接收者电子邮件地址和一个接收者姓名以接收更新可用通知。您可以通过在.env文件中添加SELF_UPDATER_MAILTO_NAMESELF_UPDATER_MAILTO_ADDRESS来指定这些值。

用法

要开始更新过程,例如在控制器中,只需使用

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)。请参阅许可证文件以获取更多信息。