Alat penyebaran utusan
- Pemberitahuan mesej
-
Pengenalan
Laravel Envoy menyediakan satu set sintaks ringkas dan ringan untuk mentakrifkan tugas harian pelayan jauh. Sintaks gaya bilah boleh digunakan untuk mengkonfigurasi tugas penempatan, melaksanakan perintah Artisan, dsb. Pada masa ini, Envoy hanya menyokong sistem pengendalian Mac dan Linux. . menggunakan
.cgr
, yang merupakan pengganti drop-in untuk perintahcomposer global require
. Arahan pemasangan untuk pustakacgr
boleh didapati ditemui di GitHubPastikan untuk menambah
~ Direktori / .composer / vendor / bin
diletakkan dalam PATH supayaenvoy
boleh laku ditemui apabila menjalankan perintahenvoy
dalam terminal.Mengemas kini Envoy
Anda juga boleh menggunakan Composer untuk memastikan pemasangan Envoy anda dikemas kini. Menggunakan perintahkemas kini global komposer
akan mengemas kini semua pakej Komposer yang dipasang secara global:composer global require laravel/envoy
global require
命令进行全局安装 Envoy:composer global update
由于全局 Composer 库有时会导致包版本冲突,因此您可能希望考虑使用
cgr
,它是composer global require
命令的直接替代品。cgr
库的安装说明可参阅 found on GitHub.确保将
〜/ .composer / vendor / bin
目录放在 PATH 中,以便在终端中运行envoy
命令时找到envoy
可执行文件。更新 Envoy
您也可以使用 Composer 使您的 Envoy 安装保持最新。 使用
composer global update
命令将更新所有全局安装的 Composer 包:@servers(['web' => ['user@192.168.1.1']]) @task('foo', ['on' => 'web']) ls -la @endtask
编写任务
您的所有 Envoy 任务都应该在项目根目录中的
Envoy.blade.php
文件中定义。 这是一个让你入门的例子:@servers(['localhost' => '127.0.0.1'])
如您所见,在文件顶部定义了一个
@server
数组,允许您在任务声明的on
选项中引用这些服务器。 在你的@ task
声明中,你应该放置在任务执行时应该在你的服务器上运行的 Bash 代码。您可以通过将服务器的 IP 地址指定为
127.0.0.1
来强制脚本在本地运行:@setup $now = new DateTime(); $environment = isset($env) ? $env : "testing"; @endsetup
配置
有时,您可能需要在执行 Envoy 任务之前执行一些 PHP 代码。 您可以使用
@ setup
指令声明变量,并在执行任何其他任务之前执行其他常规 PHP 工作:@include('vendor/autoload.php') @task('foo') # ... @endtask
如果在执行任务之前需要其他 PHP 文件,可以在
Envoy.blade.php
文件的顶部使用@include
指令:envoy run deploy --branch=master
变量
如果需要,您可以使用命令行将选项值传递到 Envoy 任务:
@servers(['web' => '192.168.1.1']) @task('deploy', ['on' => 'web']) cd site @if ($branch) git pull origin {{ $branch }} @endif php artisan migrate @endtask
您可以通过 Blade 的「echo」 语法访问任务中的选项。 您也可以在任务中使用
Tugas Penulisanif
语句和循环。 例如,在执行git pull
命令之前,让我们验证$ branch
@servers(['web' => '192.168.1.1']) @story('deploy') git composer @endstory @task('git') git pull origin master @endtask @task('composer') composer install @endtask
Seperti yang anda lihat, terdapat tatasusunan@server
ditakrifkan di bahagian atas fail, membolehkan anda menentukanon
pilihan dalam pengisytiharan tugas Rujuk pelayan ini. Dalam perisytiharan@task
anda, anda harus meletakkan kod Bash yang sepatutnya dijalankan pada pelayan anda apabila tugasan dilaksanakan. Anda boleh memaksa skrip berjalan secara setempat dengan menyatakan alamat IP pelayan sebagai127.0.0.1: 🎜 envoy run deploy
🎜🎜🎜🎜🎜Konfigurasi🎜🎜 Kadangkala, anda mungkin perlu melaksanakan beberapa kod PHP sebelum melaksanakan tugas Utusan. Anda boleh menggunakan arahan@setup
untuk mengisytiharkan pembolehubah dan melaksanakan kerja PHP umum yang lain sebelum melaksanakan sebarang tugas lain: 🎜@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
🎜 Jika anda memerlukan fail PHP lain sebelum melaksanakan tugas, ia boleh didapati dalamEnvoy.blade Gunakan arahan
: 🎜@include
di bahagian atas fail .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
🎜🎜🎜🎜 🎜Variables🎜🎜Jika perlu, anda boleh menghantar nilai pilihan ke tugas Utusan menggunakan baris arahan: 🎜envoy run task
🎜Anda boleh mengakses pilihan dalam tugasan melalui sintaks "gema" Blade. Anda juga boleh menggunakan penyataan dan gelungif
dalam tugasan. Sebagai contoh, sebelum melaksanakan perintahgit pull
, mari sahkan kewujudan pembolehubah$ branch
: 🎜@task('deploy', ['on' => 'web', 'confirm' => true]) cd site git pull origin {{ $branch }} php artisan migrate @endtask
🎜🎜🎜🎜🎜🎜Stories
Stories mengumpulkan satu set tugasan di bawah nama yang mudah, membolehkan anda mengumpulkan tugasan yang kecil dan tertumpu kepada tugas yang lebih besar. Contohnya, cerita
deploy
boleh menjalankan tugasgit
dancomposer
dengan menyenaraikan nama tugas dalam takrifnya:deploy
故事可以通过在其定义中列出任务名称来运行git
和composer
任务:@finished @slack('webhook-url', '#bots') @endfinished
一旦编写了 story ,你可以像一个典型的任务一样运行它:
@finished @discord('discord-webhook-url') @endfinished
多服务器
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 Setelah cerita itu bertulis, Anda boleh menjalankannya seperti tugas biasa:
Berbilang pelayanUtusan membenarkan anda Jalankan tugas dengan mudah merentas berbilang pelayan. Mula-mula, tambah pelayan tambahan dalam perisytiharan@server
. Setiap pelayan harus diberi nama yang unik. Selepas mentakrifkan pelayan lain, senaraikan setiap pelayan dalam tatasusunan "on" tugas: 🎜rrreee🎜Jalankan selari
🎜Lalai , tugasan akan dilaksanakan secara bersiri pada setiap pelayan. Dalam erti kata lain, tugasan akan selesai berjalan pada pelayan pertama sebelum meneruskan pada pelayan kedua. Jika anda ingin menjalankan tugas pada berbilang pelayan secara selari, tambahkan pilihanselari
pada pengisytiharan tugas: 🎜rrreee🎜🎜🎜🎜Jalankan Tugas
🎜Untuk menjalankan tugas atau cerita yang ditakrifkan dalam failEnvoy.blade.php
, laksanakanrun
Envoy kod> perintah, menghantar nama tugas atau cerita yang ingin anda laksanakan. Apabila tugasan berjalan, Envoy akan menjalankan tugas dan memaparkan output daripada pelayan: 🎜rrreee🎜🎜🎜🎜🎜Pengesahan tugas 🎜🎜 Jika anda ingin digesa untuk pengesahan sebelum menjalankan tugas yang diberikan pada pelayan, anda harus menambah arahansahkan
pada pengisytiharan tugas. Pilihan ini amat berguna untuk operasi yang merosakkan: 🎜rrreee🎜🎜🎜🎜Pemberitahuan mesej
🎜🎜🎜🎜🎜Slack🎜🎜Envoy turut menyokong Slack🎜 Hantar pemberitahuan. Arahan@slack
menerima URL cangkuk Slack dan nama saluran. Anda boleh mendapatkan semula URL webhook anda dengan membuat penyepaduanIncoming WebHooks
dalam papan pemuka Slack anda. Anda harus menghantar keseluruhan URL webhook kepada arahan@slack
: 🎜rrreee🎜Anda boleh menyediakan salah satu daripada yang berikut sebagai parameter saluran: 🎜- < li> Hantar pemberitahuan ke saluran:
- Hantar pemberitahuan kepada pengguna:
@user
🎜🎜🎜🎜🎜🎜🎜🎜🎜Discord
Envoy juga menyokong penghantaran pemberitahuan kepada Discord selepas setiap tugasan dilakukan.
rrreee@ discord
指令接受 Discord 钩子 URL 和消息。 您可以通过在Webhook
中创建 Webhook 并选择 webhook 应发布到哪个频道来检索您的 webhook URL。 您应该将整个 Webhook URL 传递到@ discord
Perintah:
#channel
🎜- 给频道发送通知: