Laravel Laravel
  • 前言

    • 发行说明
    • 升级向导
    • 贡献导引
    • API 文档
  • 入门指南

    • 安装
    • 配置
    • 文件夹结构
    • Homestead
    • Valet
    • 部署
  • 架构思想

    • 请求生命周期
    • 服务容器
    • 服务提供者
    • Facades:门面
    • Contracts:契约
  • 基础功能

    • 路由
    • 中间件
    • CSRF 保护
    • 控制器
    • 请求
    • 响应
    • 视图
    • URL 生成
    • Session
    • 表单验证
    • 错误处理
    • 日志
  • 前端开发

    • Blade 模板
    • 本地化
    • 前端脚手架
    • 编译资源
  • 安全

    • 身份认证
    • API 身份认证
    • 授权
    • 邮件验证
    • 加密
    • 哈希
    • 重置密码
  • 深入话题

    • Artisan 命令行
    • 广播
    • 缓存
    • 集合
    • 事件
    • 文件存储
    • 辅助函数
    • Mail
    • 消息通知
    • 扩展包开发
    • 队列
    • 任务调度
  • 数据库

    • 快速入门
    • 查询构造器
    • 分页
    • 数据库迁移
    • 数据填充
    • Redis
  • Eloquent ORM

    • 快速入门
    • 关联关系
    • Eloquent 集合
    • 修改器
    • API 资源
    • 序列化
  • 测试

    • 快速入门
    • HTTP 测试
    • 命令行测试
    • 浏览器测试
    • 数据库测试
    • 测试模拟器Mocking
  • 官方扩展包

    • Cashier
    • Dusk浏览器测试
    • Envoy部署工具
    • Horizon队列管理工具
    • Passport OAuth 认证
    • Scout全文搜索
    • Socialite社会化登录
    • Telescope 调试工具
Icon

提示 您正在浏览旧版本的 Laravel 的文档. 请考虑将你的项目升级到 Laravel 11.x.

6 1

Envoy 部署工具
5.8
8.x 7.x 6.x 5.8 5.7 5.6 5.5 5.4 5.3 5.2 5.1

Laravel 5.8 中文文档 /

未匹配的标注
本文档最新版为 8.x,旧版本可能放弃维护,推荐阅读最新版!

Laravel Envoy

  • 简介
    • 安装
  • 编写任务
    • 配置
    • 变量
    • Stories
    • 多服务模式
  • 运行任务
    • 任务确认
  • 消息通知
    • Slack
    • Discord

简介

Laravel Envoy 为定义远程服务器的日常任务,提供了一套简洁、轻量的语法。Blade 风格语法即可实现部署任务的配置、Artisan 命令的执行等。目前,Envoy 仅支持 Mac 和 Linux 操作系统。.

安装

首先,运行 Composer 的 global require 命令进行全局安装 Envoy:

composer global require laravel/envoy

由于全局 Composer 库有时会导致包版本冲突,因此您可能希望考虑使用 cgr ,它是 composer global require 命令的直接替代品。 cgr 库的安装说明可参阅 found on GitHub.

确保将 〜/ .composer / vendor / bin 目录放在 PATH 中,以便在终端中运行 envoy 命令时找到 envoy 可执行文件。

更新 Envoy

您也可以使用 Composer 使您的 Envoy 安装保持最新。 使用 composer global update 命令将更新所有全局安装的 Composer 包:

composer global update

编写任务

您的所有 Envoy 任务都应该在项目根目录中的 Envoy.blade.php 文件中定义。 这是一个让你入门的例子:

@servers(['web' => ['user@192.168.1.1']])

@task('foo', ['on' => 'web'])
    ls -la
@endtask

如您所见,在文件顶部定义了一个 @server 数组,允许您在任务声明的 on 选项中引用这些服务器。 在你的 @ task 声明中,你应该放置在任务执行时应该在你的服务器上运行的 Bash 代码。

您可以通过将服务器的 IP 地址指定为 127.0.0.1 来强制脚本在本地运行:

@servers(['localhost' => '127.0.0.1'])

配置

有时,您可能需要在执行 Envoy 任务之前执行一些 PHP 代码。 您可以使用 @ setup 指令声明变量,并在执行任何其他任务之前执行其他常规 PHP 工作:

@setup
    $now = new DateTime();

    $environment = isset($env) ? $env : "testing";
@endsetup

如果在执行任务之前需要其他 PHP 文件,可以在 Envoy.blade.php 文件的顶部使用 @include 指令:

@include('vendor/autoload.php')

@task('foo')
    # ...
@endtask

变量

如果需要,您可以使用命令行将选项值传递到 Envoy 任务:

envoy run deploy --branch=master

您可以通过 Blade的「echo」 语法访问任务中的选项。 您也可以在任务中使用 if 语句和循环。 例如,在执行 git pull 命令之前,让我们验证 $ branch 变量的存在:

@servers(['web' => '192.168.1.1'])

@task('deploy', ['on' => 'web'])
    cd site

    @if ($branch)
        git pull origin {{ $branch }}
    @endif

    php artisan migrate
@endtask

Stories

Stories 将一组任务分组在一个方便的名称下,允许您将小型,集中的任务分组到大型任务中。 例如, deploy 故事可以通过在其定义中列出任务名称来运行 git和 composer 任务:

@servers(['web' => '192.168.1.1'])

@story('deploy')
    git
    composer
@endstory

@task('git')
    git pull origin master
@endtask

@task('composer')
    composer install
@endtask

一旦编写了 story ,你可以像一个典型的任务一样运行它:

envoy run deploy

多服务器

Envoy 允许您轻松跨多个服务器运行任务。 首先,在 @server 声明中添加其他服务器。 应为每个服务器分配一个唯一的名称。 定义了其他服务器后,列出任务的「on」数组中的每个服务器:

@servers(['web-1' => '192.168.1.1', 'web-2' => '192.168.1.2'])

@task('deploy', ['on' => ['web-1', 'web-2']])
    cd site
    git pull origin {{ $branch }}
    php artisan migrate
@endtask

并行运行

默认情况下,将在每个服务器上串行执行任务。 换句话说,任务将在继续在第二台服务器上执行之前在第一台服务器上完成运行。 如果您想并行运行多个服务器上的任务,请在任务声明中添加 parallel 选项:

@servers(['web-1' => '192.168.1.1', 'web-2' => '192.168.1.2'])

@task('deploy', ['on' => ['web-1', 'web-2'], 'parallel' => true])
    cd site
    git pull origin {{ $branch }}
    php artisan migrate
@endtask

运行任务

要运行在 Envoy.blade.php 文件中定义的任务或故事,请执行 Envoy 的 run 命令,传递您要执行的任务或故事的名称。 当任务运行时, Envoy 将运行任务并显示服务器的输出:

envoy run task

任务确认

如果您希望在服务器上运行给定任务之前提示您进行确认,则应将 confirm 指令添加到任务声明中。 此选项对于破坏性操作特别有用:

@task('deploy', ['on' => 'web', 'confirm' => true])
    cd site
    git pull origin {{ $branch }}
    php artisan migrate
@endtask

消息通知

Slack

Envoy 还支持在执行每个任务后向 Slack 发送通知。 @slack 指令接受 Slack 钩子 URL 和通道名称。 您可以通过在 Slack 控制面板中创建 Incoming WebHooks 集成来检索您的 webhook URL 。 您应该将整个webhook URL传递给 @slack 指令:

@finished
    @slack('webhook-url', '#bots')
@endfinished

您可以提供以下其中一项作为频道参数:

  • 给频道发送通知: #channel
  • 给用户发送通知: @user

Discord

Envoy 还支持在执行每项任务后向 Discord 发送通知。 @ discord 指令接受 Discord 钩子 URL 和消息。 您可以通过在 Webhook 中创建 Webhook 并选择 webhook 应发布到哪个频道来检索您的 webhook URL。 您应该将整个 Webhook URL 传递到@ discord指令:

@finished
    @discord('discord-webhook-url')
@endfinished

本文章首发在 网站上。


上一篇 下一篇

成为Laravel合作伙伴

Laravel Partners是提供一流Laravel开发和咨询服务的精英商店。我们每个合作伙伴都可以帮助您制定一个精美,结构完善的项目.

我们的伙伴
Laravel
亮点
  • Our Team
  • 发布说明
  • 入门
  • 路由
  • Blade 模板
  • 身份验证
  • 用户授权
  • Artisan 控制台
  • 数据库
  • Eloquent ORM
  • 测试
资源
  • Laravel Bootcamp
  • Laracasts
  • Laravel News
  • Laracon
  • Laracon EU
  • Laracon India
  • Jobs
  • Forums
  • Trademark
  • 版本发布时间
  • 包开发
  • 命令行应用
  • TALL stack全栈开发
  • Blade UI Kit
  • 前端资源构建
伙伴
  • WebReinvent
  • Vehikl
  • Tighten
  • 64 Robots
  • Active Logic
  • Byte 5
  • Curotec
  • Cyber-Duck
  • DevSquad
  • Jump24
  • Kirschbaum
生态系统
  • Cashier
  • Dusk
  • Echo
  • Envoyer
  • Forge
  • Horizon
  • Nova
  • Octane
  • Sail
  • Sanctum
  • Scout
  • Spark
  • Telescope
  • Valet
  • Vapor

Laravel是一个具有表达力,优雅语法的Web应用程序框架。我们认为,发展必须是一种令人愉悦的创造力,才能真正实现。Laravel试图通过减轻大多数Web项目中使用的常见任务来减轻开发的痛苦.

Laravel是Taylor Otwell的商标.
Copyright © 2011-2025 Laravel中文网 LLC.

  • Twitter
  • GitHub
  • Discord
Laravel 全栈开发网 推荐使用阿里云 按Ctrl+D试试