dylan7778/forge-deploy

一个用于安全部署代码到Laravel Forge的简单工具。

v1.1.5 2022-09-15 14:21 UTC

README

Contributors Forks Stargazers Issues License


Forge-Deploy

更安全、更健壮地将您的代码部署到Laravel Forge的方法。

Logo

DanDillon.dev

目录

关于项目

Forge Deploy是一个轻量级的包,旨在帮助您安全地将代码部署到多个Forge环境。它不是作为功能齐全的CI的替代品,而是一个简单的工具,在将代码推送到生产环境之前运行一些基本检查和npm操作。例如,这个包将检查确保您正在将正确的分支推送到正确的origin,为该环境运行适当的NPM命令,检查是否有未提交的更改,甚至在允许您推送代码之前验证您是否位于正确的存储库。

入门

先决条件

  • 此包与Laravel 5+和PHP 7+兼容,并利用包自动发现。

  • 此包利用本地文件系统读取您的git配置文件,因此您只能在git控制的项目中使用。它目前配置为在类似Linux的系统上工作,例如Mac。Windows支持即将推出。

安装

  1. 使用composer将包添加到您的项目
composer require dylan7778/forge-deploy --dev
  1. 发布配置文件
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自动处理错误将是未来版本的目标。

贡献

贡献是使开源社区成为一个如此棒的地方来学习、启发和创造的原因。您做出的任何贡献都将被高度赞赏。

  1. 分支项目
  2. 创建您的功能分支(git checkout -b feature/AmazingFeature
  3. 提交您的更改(git commit -m '添加一些AmazingFeature'
  4. 将更改推送到分支(git push origin feature/AmazingFeature
  5. 打开一个Pull Request

许可

在MIT许可证下分发。有关更多信息,请参阅LICENSE.md

联系方式

丹·狄龙 - @dandillondev - dan@dandillon.dev

项目链接:https://github.com/dylan7778/forge-deploy