osenco / updater
为您的自托管Laravel应用程序提供自动更新功能。
Requires
- php: >=7.3
- ext-json: *
- ext-zip: *
- guzzlehttp/guzzle: 6.*
- laravel/framework: ^6.0|^7.0
Requires (Dev)
- dg/bypass-finals: ^1.1
- mikey179/vfsstream: ^1.6
- mockery/mockery: ^1.3
- orchestra/testbench: ^4.0|^5.0
- phpunit/phpunit: ^8.4|^9.0
This package is auto-updated.
Last update: 2024-09-19 15:47:58 UTC
README
本包提供了一些基本方法来实现您的Laravel 5应用程序的自更新功能。已包含一些通过GitHub提供更新机制的方法。
通常您在分发需要更新机制的自托管Laravel应用程序时需要它,而没有Composer。
兼容性
- PHP: 7.3 & 7.4
- Laravel: 6.x & 7.x
安装
使用Composer从master安装最新版本
$ composer require osenco/updater
配置
安装包后,您需要通过以下方式发布配置文件:
$ php artisan vendor:publish --provider="Osen\Updater\UpdaterServiceProvider"
注意:如果您想将GitHub用作更新的源,请确保在您的config/updater.php
中正确输入供应商和存储库名称。
ℹ️ 设置当前安装的版本
在开始更新之前,请确保正确设置已安装的版本。您负责在配置文件中或更好的是使用环境变量UPDATER_VERSION_INSTALLED
设置当前安装的版本。
基于tag
的更新
将已安装的版本设置为发布版本中设置的标签之一。
基于branch
的更新
将已安装的版本设置为最新提交的时间戳。
有效的版本可以是: 2020-04-19T22:35:48Z
运行Artisan命令
可以在更新过程前后运行Artisan命令,并在config/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. ] ] ] ]
通过电子邮件通知
您需要指定一个收件人电子邮件地址和一个收件人姓名以接收更新可用通知。您可以通过将UPDATER_MAILTO_NAME
和UPDATER_MAILTO_ADDRESS
添加到您的.env
文件来指定这些值。
私有存储库
可以通过(Bearer)令牌访问私有存储库。配置文件中的每个存储库都应该有一个private_access_token
字段,您可以在此处设置令牌。
注意:不要在令牌前添加Bearer
前缀。这会自动完成。
用法
要开始更新过程,例如在控制器中,只需使用以下命令
Route::get('/', function (\Osen\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/updater.php
文件中设置了正确的存储库。
基于tag
的更新
这是默认设置。更新将通过使用标记提交,即发布来获取。
基于branch
的更新
通过配置文件中的use_branch
设置内部配置选择应使用的分支。
// ... 'repository_types' => [ 'github' => [ 'type' => 'github', 'repository_vendor' => env('UPDATER_REPO_VENDOR', ''), 'repository_name' => env('UPDATER_REPO_NAME', ''), // ... 'use_branch' => 'v2', ], // ... ];
使用Http存档
本包附带一个Http源存储库类型,用于从包含zip存档的HTTP目录列表中获取发布版本。
要使用HTTP存档运行,请在您的.env
文件中使用以下设置
存档URL应仅包含一个简单的目录列表,其中包含相应的zip存档。
UPDATER_PKG_FILENAME_FORMAT
包含所有 webapp 更新包的文件名格式。例如,当在归档 URL 列出的更新包包含类似于 webapp-v1.2.0.zip
、webapp-v1.3.5.zip
等名称时,格式应该是 webapp-v_VERSION_
。其中 _VERSION_
部分用于作为 MAJOR.MINOR.PATCH
版本的语义版本变量。zip 扩展名会自动添加。
目标归档文件必须是 zip 归档,并且应包含所有根目录下的文件,而不是在以归档本身命名的额外文件夹内。
贡献
请参阅贡献指南。
许可证
MIT 许可证(MIT)。有关更多信息,请参阅许可证文件。