dylan7778 / forge-deploy
一个用于安全部署代码到Laravel Forge的简单工具。
Requires
- php: >=7.0
README
Forge-Deploy
更安全、更健壮地将您的代码部署到Laravel Forge的方法。
由
目录
关于项目
Forge Deploy是一个轻量级的包,旨在帮助您安全地将代码部署到多个Forge环境。它不是作为功能齐全的CI的替代品,而是一个简单的工具,在将代码推送到生产环境之前运行一些基本检查和npm操作。例如,这个包将检查确保您正在将正确的分支推送到正确的origin,为该环境运行适当的NPM命令,检查是否有未提交的更改,甚至在允许您推送代码之前验证您是否位于正确的存储库。
入门
先决条件
-
此包与Laravel 5+和PHP 7+兼容,并利用包自动发现。
-
此包利用本地文件系统读取您的git配置文件,因此您只能在git控制的项目中使用。它目前配置为在类似Linux的系统上工作,例如Mac。Windows支持即将推出。
安装
- 使用composer将包添加到您的项目
composer require dylan7778/forge-deploy --dev
- 发布配置文件
php artisan vendor:publish
用法
要使用此包,您首先需要在发布的配置文件中设置一些基本参数。我们建议您将这些参数存储在您的ENV文件中,但您也可以根据需要直接在配置文件中存储它们。您将有一个选项来设置多个环境,每个环境存储为特定部署目标的参数数组。
全局参数
- 'base_directory': 您本地文件系统中项目的绝对路径(例如,/Users/user/php/project-name)
环境特定参数
- 'npm_build_type': production/dev - 根据环境适当设置此参数
- 'deployment_webhook': 在Laravel Forge仪表板中提供的您的部署webhook
- 'git_branch': 您希望部署此环境的分支(例如,'master'、'dev'或'staging')
以下是一个包含生产环境和预发布环境的示例配置
'base_directory' => '/Users/user/php/project-name',
'environments' => [
'production' => [
'npm_build_type' => 'production',
'deployment_webhook' => 'https://forge.laravel.net.cn/servers/1234567/sites/1234567/deploy/...',
'git_branch' => 'master',
],
'staging' => [
'npm_build_type' => 'dev',
'deployment_webhook' => 'https://forge.laravel.net.cn/servers/4567891/sites/4567891/deploy/...',
'git_branch' => 'staging',
],
]
完成基本设置后,您现在可以直接从您的根目录运行部署代码。命令如下
php artisan deploy {environment} {run_npm?}
此命令中有两个标志。第一个是环境名称,另一个是可选参数,它告诉脚本是否在部署之前执行npm run构建代码。在某些情况下,例如仅修改后端PHP文件时,您可能不想在部署时等待npm run production命令,因此您可以手动覆盖此选项。默认情况下,如果未指定'no_npm'标志,则始终运行npm命令。以下是一些示例
- 部署到生产环境并包含npm构建命令
php artisan deploy production
- 部署到预发布环境且不包含npm构建命令
php artisan deploy staging no_npm
您还可以使用“all”作为环境关键字,一次性将应用部署到所有环境。请注意,这只能在您为每个环境工作在相同分支的情况下进行。该包将自动检查以确保每个环境都在相同的分支上并且有有效的webhook,然后使用以下命令将更改推送到每个环境:
- 部署到所有环境
php artisan deploy all
重要说明
- 在开始使用此包之前,请确保您已从Forge仪表板关闭快速部署。
- 此包旨在帮助您避免意外将代码从错误分支部署到您的生产服务器。为此,会检查您的当前git分支与给定环境的配置文件中预期的git分支进行比较。此外,还会检查以确保您已提交到所选分支的干净提交,因此您必须在提交或暂存所有更改之前才能部署。
- 此包不验证服务器级别的部署成功,它仅验证是否向Forge发送了webhook并且收到了200状态码的响应。如果您的服务器发生错误,您需要负责监控并适当处理。使用Forge webhooks自动处理错误将是未来版本的目标。
贡献
贡献是使开源社区成为一个如此棒的地方来学习、启发和创造的原因。您做出的任何贡献都将被高度赞赏。
- 分支项目
- 创建您的功能分支(
git checkout -b feature/AmazingFeature) - 提交您的更改(
git commit -m '添加一些AmazingFeature') - 将更改推送到分支(
git push origin feature/AmazingFeature) - 打开一个Pull Request
许可
在MIT许可证下分发。有关更多信息,请参阅LICENSE.md。
联系方式
丹·狄龙 - @dandillondev - dan@dandillon.dev