hsyir/laravel-selfupdater

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

3.1 2020-09-17 13:33 UTC

README

Latest Stable Version Total Downloads StyleCI Codacy Badge codecov

此包为Laravel 5应用程序提供一些基本方法,以实现自动更新功能。已捆绑的一些方法可以通过Github提供自动更新机制。

通常在分发需要一些更新机制的本地Laravel应用程序时需要此功能,而不需要Composer

兼容性

  • PHP: 7.3 & 7.4
  • Laravel: 6.x & 7.x

安装

使用Composer从master安装最新版本

$ composer require codedge/laravel-selfupdater

配置

安装包后,您需要通过以下方式发布配置文件

$ php artisan vendor:publish --provider="Codedge\Updater\UpdaterServiceProvider"

注意:如果您想将Github用作更新源,请确保在您的config/self-updater.php文件中正确输入供应商和仓库名称。

ℹ️ 设置当前安装版本

在开始更新之前,请确保正确设置已安装的版本。您负责在配置文件中设置当前安装版本,或者更好的是通过env变量SELF_UPDATER_VERSION_INSTALLED

tag基于更新

将安装版本设置为发布中设置的标签之一。

branch基于更新

将安装版本设置为最新提交的日期时间。
有效的版本可以是:2020-04-19T22:35:48Z

运行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_NAMESELF_UPDATER_MAILTO_ADDRESS添加到您的.env文件中来指定这些值。

私有仓库

私有仓库可以通过(Bearer)令牌访问。配置文件中的每个仓库都应该有一个private_access_token字段,其中可以设置令牌。

注意:不要在令牌前添加Bearer 前缀。这是自动完成的。

使用方法

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

Route::get('/', function (\Codedge\Updater\UpdaterManager $updater) {

    // Check if new version is available
    if($updater->source()->isNewVersionAvailable()) {

        // Get the current installed version
        echo $updater->source()->getVersionInstalled();

        // Get the new version available
        $versionAvailable = $updater->source()->getVersionAvailable();

        // Create a release
        $release = $updater->source()->fetch($versionAvailable);

        // Run the update process
        $updater->source()->update($release);
        
    } else {
        echo "No new version available.";
    }

});

目前,源代码的获取是一个同步过程。它不在后台运行。

使用Github

此包包含一个Github源代码库类型,用于从Github获取发布内容——基本上是使用Github来拉取软件的最新版本。

只需确保在您的config/self-updater.php文件中设置了正确的仓库。

基于标签的更新

这是默认设置。将通过标记提交,即发布来获取更新。

基于分支的更新

通过配置文件中的use_branch设置选择要使用的分支内部配置

// ...
'repository_types' => [
    'github' => [
        'type' => 'github',
        'repository_vendor' => env('SELF_UPDATER_REPO_VENDOR', ''),
        'repository_name' => env('SELF_UPDATER_REPO_NAME', ''),
        // ...
        'use_branch' => 'v2',
   ],          
   // ...
];

使用Http存档

此包包含一个Http源代码库类型,用于从包含zip存档的HTTP目录列表中获取发布内容。

要使用HTTP存档运行,请在您的.env文件中使用以下设置

存档URL应仅包含简单的目录列表,以及相应的zip存档。

SELF_UPDATER_PKG_FILENAME_FORMAT 包含所有 webapp 更新包的文件名格式。例如,当存档 URL 中列出的更新包包含类似于 webapp-v1.2.0.zipwebapp-v1.3.5.zip 等名称时,格式应该是 webapp-v_VERSION_。其中 _VERSION_ 部分用作 MAJOR.MINOR.PATCH 版本语义化的变量。zip 扩展名会自动添加。

目标存档文件必须是 zip 存档,并且应包含根目录下的所有文件,而不是在类似于存档本身的额外文件夹内。

贡献

请参阅贡献指南

许可证

MIT 许可证 (MIT)。有关更多信息,请参阅许可证文件