valorin / deploy
Deploy 是一个 Artisan 命令,旨在提供一个非常简单的方式来部署您的代码到预发布和生产环境,同时确保应用了有效的版本标签。
Requires
- php: >=5.4.0
- illuminate/remote: ~5.0
- illuminate/support: ~5.0
README
Deploy 受到 Laravel Envoy 的启发,旨在提供一个非常简单的方式来部署您的代码到生产环境,同时确保应用了有效的版本标签。它允许您在任何时候部署到预发布/验收环境,当您推送到生产环境时,将额外执行一个版本标签检查,以确保所有生产版本都被适当地标记。
它使用在 app/config/remote.php
中配置的远程主机,并以 Artisan 命令的形式集成到您的应用程序中,因此部署代码就像这样: ./artisan deploy
。
自 v1.2 版本起,它包括指定自定义标签的功能,这些标签可以在命令执行时替换,允许您指定如下命令
$commands = ['git pull -f {remote|origin} {branch|master}'];
但根据需要应用自定义分支和远程名称
php artisan deploy --remote=github --branch=production
安装
使用 composer 将包添加到您的应用程序中
composer require "valorin/deploy:~1.2"
将 DeployServiceProvider
服务提供者添加到 ./app/config/app.php
中的 providers
列表
'providers' => array(
...
'Valorin\Deploy\DeployServiceProvider',
),
更新 app/config/remote.php
以至少包含一个远程主机。
使用方法
要部署到在 app/config/remote.php
中指定的远程主机,请运行 deploy
命令并指定远程主机名称(键,不是主机名),或者将其留空以使用默认远程
./artisan deploy <name>
默认情况下,Deploy 将执行以下操作
首先,在 本地环境 中,它将检查指定的远程名称。如果是 production
,它将触发版本标签检查。
版本标签检查会在最新提交中查找有效的 语义版本 标签。如果没有找到,它将计算多种发布类型的下一个可能的版本(主要、次要、补丁、rc 等),并提示您选择一个。当您选择了有效的版本后,Deploy 将标记您的最新提交。
一旦存在有效的版本标签,或者您没有部署到生产环境,Deploy 将执行一个 git push
来确保您没有忘记推送任何内容。
在推送成功后,它将连接到远程服务器并运行预定义的命令列表
'commands' => array(
'down' => 'php artisan down',
'checkout' => 'git checkout -f {branch|master}',
'fetch' => 'git fetch {remote|origin}',
'tags' => 'git fetch {remote|origin} --tags',
'pull' => 'git pull -f {remote|origin} {branch|master}',
'composer' => 'composer install {composer-args|--no-dev}',
'up' => 'php artisan up',
'queue' => 'php artisan queue:restart',
)
注意:所有这些选项和行为都可以在配置中进行自定义。
使用选项标签
Deploy 支持使用选项标签,允许您在运行 deploy 时通过命令行传递参数(甚至是命令),而不是需要手动扩展和编辑配置文件。
如上所示的默认命令列表所示,标签的格式为 {option}
或 {option|default}
。当您指定一个没有默认值的 {option}
时,如果没有提供选项,Deploy 将抛出错误。
选项通过添加格式为 --set-option=value
的参数进行指定,其中 --set-
是选项名称的前缀。
使用默认命令(如上所示),您可以告诉 Deploy 使用 github
远程和 production
分支,如下所示
php artisan deploy --set-remote=github --set-branch-production
配置
要更改默认配置,请运行
./artisan config:publish "valorin/deploy"
然后编辑配置文件
./app/config/packages/valorin/deploy/config.php
该文件将包含每个选项的解释,因此您可以根据需要自定义 Deploy。
版本历史
- v1.3.0
- 支持Laravel 5,并从Laravel核心框架中移除了远程/SSH。
- v1.2.1
- 移除了DownSafe命令,因为Laravel中合并的修复bug。
- v1.2.0
- 实现了选项标签,使命令更加灵活。
- 为每个默认命令添加了键名,以便扩展更简单。
- 使用新的选择器清理了下一个版本提示。
- v1.1.0
- 清理了默认配置,使其对新用户更友好。
- v1.0.0
- 首次发布
* 注意,存在一个bug,阻止了嵌套包配置的级联。