jamielsharief / updater
应用程序更新和升级
Requires
- php: >=7.3.0
- ext-zip: *
- originphp/console: ^3.11
- originphp/filesystem: ^3.0
- originphp/http-client: ^3
- originphp/validation: ^2
- originphp/zip: ^2
Requires (Dev)
- originphp/test-suite: ^3.11
- phpstan/phpstan: ^0.12.64
- phpunit/phpunit: ^9.2
README
Updater是一个应用程序更新器,它将更新和升级您部署的应用程序到最新版本,并在每次更新前后执行针对每个版本特定的任务。
虽然最初设计这个工具是为了让客户端或自动更新(通过CRON任务)应用程序,但我觉得它在部署/发布周期中可能很有用。
它与composer存储库(如packagist.org)或由satis生成的静态存储库一起工作。私有存储库可以使用身份验证进行保护,并在需要时存储和请求更新。
$ updater update
__ __ __ __
/ / / /___ ____/ /___ _/ /____ _____
/ / / / __ \/ __ / __ `/ __/ _ \/ ___/
/ /_/ / /_/ / /_/ / /_/ / /_/ __/ /
\____/ .___/\__,_/\__,_/\__/\___/_/
/_/
version 0.1.0
- Checking for updates company/app (1.0.2)
- Downloading company/app (1.0.3)
- Running before scripts:
> bin/console db:backup
- Extracting company/app (1.0.3)
- Running after scripts:
> composer update
> bin/console db:migrate
安装
您可以从源代码构建或从发布部分下载updater
。
下载源代码
下载源代码并构建updater
应用程序。
$ git clone http://github.com/jamielsharief/updater updater
$ cd updater
$ composer install
现在构建PHAR,这将创建bin/updater.phar
,您可以将它复制到您的应用程序bin
文件夹。
$ php -d phar.readonly=Off bin/build
全局复制
要全局安装,请复制
$ cp bin/updater.phar /usr/local/bin/updater
用法
在您的应用程序项目文件夹中创建updater.json
,并在每个版本中配置它以运行before
和after
命令,bash或PHP脚本 - 如果需要的话。
{ "url": "https://packagist.org.cn", "package": "company/app", "scripts": { "before": [ "bin/console db:backup" ], "after": [ "bin/console db:migrate" ] } }
如果您使用的是私有satis存储库,请更改updater.json
中的url
,例如https://www.example.com
,并根据需要为composer
设置身份验证。
身份验证
目前仅支持http-basic
授权,要使用它,只需在项目目录中创建auth.json
。但是,您还可以生成satis私有存储库,然后连接到各种存储库并支持更多授权方法。
{ "http-basic": { "example.com": { "username": "token", "password": "878ec3cebea5b2c1ee4c0becdb00d3d3" }, } }
Composer也可以为您创建它
composer config http-basic.example.com username password --global
初始化项目
要开始使用updater
,您需要初始化项目。
运行updater init
命令以初始化更新器,您将被提示输入当前版本,之后将拉取更新。
$ updater init
更新
要更新您的应用程序,只需运行以下命令,这将按顺序运行所有可用的更新。
$ updater update
如果您想运行当前主版本中所有可用的更新
$ updater update --all
您可以使用
--verbose
选项来查看脚本的输出,如果有任何输出
如果您想使用特定的composer版本(包括开发分支)测试更新,这将使用特定的版本,并且不会更新锁定文件。
$ updater update --version dev-master
升级
如果没有挂起的更新,这将仅升级到下一个主版本,并且不会更新第一个下一个主版本之后的任何版本。
要升级到下一个主版本,请运行upgrade
命令。
$ updater upgrade
您可以使用
--verbose
选项来查看脚本的输出,如果有任何输出
如果您想使用特定的composer版本(包括开发分支)测试升级,这将使用特定的版本,并且不会更新锁定文件。
$ updater upgrade --version dev-master
演示
如果您完成之后不删除此目录,构建PHAR将失败。
下载源代码和依赖项。
$ git clone http://github.com/jamielsharief/updater updater
$ cd updater
$ composer install
现在将示例项目下载到子目录中,例如updater/demo
,这样您就可以在不需要构建PHAR文件的情况下运行更新器。
$ composer create-project jamielsharief/updater-demo:0.1.0 demo
第一个版本没有updater.json
,因此在demo
文件夹中创建此文件,并将URL设置为仓库地址。
{ "url": "https://packagist.org.cn", "package": "jamielsharief/updater-demo", "scripts": { "before": [], "after": [] } }
初始化updater
,同时提及您解压zip存档的目录。
$ bin/updater init demo --version 0.1.0
然后运行update
命令以获取下一个可用的更新。
$ bin/updater update demo
现在,您可以运行几次或使用--all
选项。
当您准备好将应用程序升级到下一个主要版本时,运行
$ bin/updater upgrade demo