Envoy 배포 도구
ㅠㅠ
메시지 알림
- Slack
Introduction
Laravel Envoy은 원격 서버의 일상적인 작업을 정의하기 위한 간결하고 가벼운 구문 세트를 제공합니다. 블레이드 스타일 구문은 배포 작업 구성, Artisan 명령 실행 등에 사용될 수 있습니다. 현재 Envoy는 Mac 및 Linux 운영 체제만 지원합니다. .
Installation
먼저 Composer의
global require
명령을 실행하여 Envoy를 전역적으로 설치합니다.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
전역 Composer 라이브러리가 때때로 패키지 버전 충돌을 일으킬 수 있으므로 다음을 고려해 보세요.composer global require
명령을 즉시 대체하는cgr
을 사용합니다.cgr
라이브러리 설치 지침은 GitHub에서 찾을 수 있습니다.꼭 추가하세요
~ / .composer / Vendor / bin
디렉토리는 PATH에 배치되어envoy
명령을 실행할 때envoy
실행 파일을 찾을 수 있습니다. 단말기.Composer를 사용하여 Envoy 설치를 최신 상태로 유지할 수도 있습니다.Envoy 업데이트
composer global update
명령을 사용하면 전역적으로 설치된 모든 Composer 패키지가 업데이트됩니다: 🎜@servers(['web' => '192.168.1.1']) @story('deploy') git composer @endstory @task('git') git pull origin master @endtask @task('composer') composer install @endtask
🎜🎜🎜🎜🎜작업 작성🎜🎜모든 Envoy 작업은 프로젝트 루트 디렉터리의Envoy.blade.php
파일에 정의되어야 합니다. 다음은 시작하는 데 도움이 되는 예입니다. 🎜envoy run deploy
🎜보시다시피 파일 상단에@server
배열이 정의되어 있어on
을 지정할 수 있습니다. 작업 선언의 옵션 이 서버를 참조하세요.@task
선언에는 작업이 실행될 때 서버에서 실행되어야 하는 Bash 코드를 배치해야 합니다. 🎜🎜서버의 IP 주소를127.0.0.1
로 지정하여 스크립트를 로컬에서 강제로 실행할 수 있습니다. 🎜@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
🎜🎜🎜🎜🎜Configuration🎜🎜 때로는 Envoy 작업을 실행하기 전에 일부 PHP 코드를 실행해야 할 수도 있습니다. 다른 작업을 수행하기 전에@setup
지시문을 사용하여 변수를 선언하고 기타 일반 PHP 작업을 수행할 수 있습니다. 🎜@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
🎜 작업을 수행하기 전에 다른 PHP 파일이 필요한 경우에서 찾을 수 있습니다. Envoy.blade .php
파일 상단에 있는@include
지시어를 사용하세요: 🎜envoy run task
🎜🎜🎜🎜 🎜Variables🎜🎜필요한 경우 명령줄을 사용하여 Envoy 작업에 옵션 값을 전달할 수 있습니다. 🎜@task('deploy', ['on' => 'web', 'confirm' => true]) cd site git pull origin {{ $branch }} php artisan migrate @endtask
🎜Blade의 "echo" 구문을 통해 작업의 옵션에 액세스할 수 있습니다. 작업 내에서if
문과 루프를 사용할 수도 있습니다. 예를 들어,git pull
명령을 실행하기 전에$ 분기
변수가 있는지 확인해 보겠습니다. 🎜@finished @slack('webhook-url', '#bots') @endfinished
🎜🎜🎜🎜🎜🎜Stories
Stories는 편리한 이름으로 일련의 작업을 그룹화하여 작고 집중적인 작업을 더 큰 작업으로 그룹화할 수 있습니다. 예를 들어
배포
스토리는 정의에 작업 이름을 나열하여git
및composer
작업을 실행할 수 있습니다.deploy
故事可以通过在其定义中列出任务名称来运行git
和composer
任务:@finished @discord('discord-webhook-url') @endfinished
一旦编写了 story ,你可以像一个典型的任务一样运行它:
rrreee多服务器
Envoy 允许您轻松跨多个服务器运行任务。 首先,在
rrreee@server
声明中添加其他服务器。 应为每个服务器分配一个唯一的名称。 定义了其他服务器后,列出任务的「on」数组中的每个服务器:并行运行
默认情况下,将在每个服务器上串行执行任务。 换句话说,任务将在继续在第二台服务器上执行之前在第一台服务器上完成运行。 如果您想并行运行多个服务器上的任务,请在任务声明中添加
rrreeeparallel
选项:运行任务
要运行在
rrreeeEnvoy.blade.php
文件中定义的任务或故事,请执行 Envoy 的run
命令,传递您要执行的任务或故事的名称。 当任务运行时, Envoy 将运行任务并显示服务器的输出:任务确认
如果您希望在服务器上运行给定任务之前提示您进行确认,则应将
rrreeeconfirm
指令添加到任务声明中。 此选项对于破坏性操作特别有用:消息通知
Slack
Envoy 还支持在执行每个任务后向 Slack 发送通知。
rrreee@slack
指令接受 Slack 钩子 URL 和通道名称。 您可以通过在 Slack 控制面板中创建Incoming WebHooks
集成来检索您的 webhook URL 。 您应该将整个 webhook URL 传递给@slack
指令:您可以提供以下其中一项作为频道参数:
- 给频道发送通知:
#channel
- 给用户发送通知:
@user
rrreee 스토리가 작성되면 , 일반적인 작업처럼 실행할 수 있습니다:
다중 서버Envoy를 사용하면 쉽게 여러 서버에서 작업을 실행합니다. 먼저@server
선언에 추가 서버를 추가합니다. 각 서버에는 고유한 이름이 할당되어야 합니다. 다른 서버를 정의한 후 작업의 "on" 배열에 각 서버를 나열합니다. 🎜rrreee🎜병렬 실행
🎜Default , 작업 각 서버에서 순차적으로 실행됩니다. 즉, 작업은 두 번째 서버에서 계속되기 전에 첫 번째 서버에서 실행을 완료합니다. 여러 서버에서 작업을 병렬로 실행하려면 작업 선언에parallel
옵션을 추가하세요: 🎜rrreee🎜🎜🎜🎜작업 실행
🎜Envoy.blade.php
파일에 정의된 작업이나 스토리를 실행하려면 Envoy의run
을 실행하세요. code> 명령, 수행하려는 작업이나 스토리의 이름을 전달합니다. 작업이 실행되면 Envoy는 작업을 실행하고 서버의 출력을 표시합니다. 🎜rrreee🎜🎜🎜🎜🎜작업 확인 🎜🎜 서버에서 특정 작업을 실행하기 전에 확인 메시지를 표시하려면 작업 선언에confirm
지시어를 추가해야 합니다. 이 옵션은 파괴적인 작업에 특히 유용합니다. 🎜rrreee🎜🎜🎜🎜메시지 알림
🎜🎜🎜🎜🎜Slack🎜🎜Envoy는 Slack🎜 알림을 보내세요.@slack
지시문은 Slack 후크 URL과 채널 이름을 허용합니다. Slack 대시보드에서Incoming WebHooks
통합을 생성하여 웹훅 URL을 검색할 수 있습니다. 전체 웹훅 URL을@slack
지시문에 전달해야 합니다. 🎜rrreee🎜다음 중 하나를 채널 매개변수로 제공할 수 있습니다: 🎜- < li> 채널에 알림 보내기:
- 사용자에게 알림 보내기:
@user
🎜🎜🎜🎜🎜🎜🎜🎜🎜Discord
Envoy는 각 작업이 수행된 후 Discord에 알림을 보내는 기능도 지원합니다.
rrreee@ discord
指令接受 Discord 钩子 URL 和消息。 您可以通过在Webhook
中创建 Webhook 并选择 webhook 应发布到哪个频道来检索您的 webhook URL。 您应该将整个 Webhook URL 传递到@ discord
명령어:
#channel
🎜- 给频道发送通知: