نسخه:

Envoy Task Runner

معرفی

Laravel Envoy یک دستور ساده و حداقلی را برای تعریف وظایف رایجی که روی سرورهای راه دور خود اجرا می کنید، ارائه می دهد. با استفاده از سینتکس Blade style، می توانید به راحتی وظایفی را برای استقرار، دستورات Artisan و موارد دیگر تنظیم کنید.

توجه: Envoy به PHP نسخه 5.4 یا بالاتر نیاز دارد و فقط بر روی سیستم عامل های مک / لینوکس اجرا می شود.

نصب و راه اندازی

ابتدا Envoy را با استفاده از global دستور Composer نصب کنید:

composer global require "laravel/envoy=~1.0"

مطمئن شوید که ~/.composer/vendor/bin دایرکتوری را در PATH خود قرار داده اید تا زمانی که دستور را در ترمینال خود envoy اجرا می کنید، فایل اجرایی پیدا شود . envoy

بعد، یک Envoy.blade.php فایل در ریشه پروژه خود ایجاد کنید. در اینجا یک مثال برای شروع شما آورده شده است:

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

همانطور که می بینید، آرایه ای از @servers در بالای فایل تعریف شده است. شما می توانید به این سرورها در on گزینه اعلان وظایف خود مراجعه کنید. در اعلانات خود @task باید کد Bash را قرار دهید که در هنگام اجرای کار روی سرور شما اجرا می شود.

این init دستور ممکن است برای ایجاد آسان یک فایل خرد Envoy استفاده شود:

envoy init user@192.168.1.1

در حال اجرا وظایف

برای اجرای یک کار، run از دستور نصب Envoy خود استفاده کنید:

envoy run foo

در صورت نیاز، می توانید متغیرها را با استفاده از سوئیچ های خط فرمان به فایل Envoy منتقل کنید:

envoy run deploy --branch=master

می توانید از طریق دستور Blade که به آن عادت دارید از گزینه ها استفاده کنید:

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

بوت استرپینگ

می توانید از @setup دستورالعمل برای اعلام متغیرها و انجام کارهای کلی PHP در داخل فایل Envoy استفاده کنید:

@setup
$now = new DateTime();
 
$environment = isset($env) ? $env : "testing";
@endsetup

همچنین می توانید @include برای گنجاندن هر فایل PHP استفاده کنید:

@include('vendor/autoload.php');

تایید وظایف قبل از اجرا

اگر می‌خواهید قبل از اجرای یک کار معین در سرورهای خود از شما خواسته شود تا تأیید شود، می‌توانید از confirm دستورالعمل زیر استفاده کنید:

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

چندین سرور

شما به راحتی می توانید یک کار را در چندین سرور اجرا کنید. به سادگی سرورها را در اعلان وظیفه فهرست کنید:

@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

ماکروهای وظیفه

ماکروها به شما این امکان را می دهند که با استفاده از یک فرمان، مجموعه ای از وظایف را برای اجرا به صورت متوالی تعریف کنید. برای مثال:

@servers(['web' => '192.168.1.1'])
 
@macro('deploy')
foo
bar
@endmacro
 
@task('foo')
echo "HELLO"
@endtask
 
@task('bar')
echo "WORLD"
@endtask

اکنون ماکرو deploy را می توان از طریق یک دستور ساده اجرا کرد:

envoy run deploy

اطلاعیه

هیپ چت

پس از اجرای یک کار، می توانید با استفاده از دستورالعمل ساده، یک اعلان به اتاق HipChat تیم خود ارسال کنید @hipchat :

@servers(['web' => '192.168.1.1'])
 
@task('foo', ['on' => 'web'])
ls -la
@endtask
 
@after
@hipchat('token', 'room', 'Envoy')
@endafter

همچنین می توانید یک پیام سفارشی برای اتاق هیپچت مشخص کنید. هر متغیری که در @setup یا همراه با آن اعلام شده است @include برای استفاده در پیام در دسترس خواهد بود:

@after
@hipchat('token', 'room', 'Envoy', "$task ran on [$environment]")
@endafter

این یک راه شگفت‌انگیز ساده است تا تیم خود را از کارهایی که روی سرور اجرا می‌شوند مطلع کنید.

سستی

دستور زیر ممکن است برای ارسال اعلان به Slack استفاده شود :

@after
@slack('hook', 'channel', 'message')
@endafter

شما می توانید URL وب هوک خود را با ایجاد یک Incoming WebHooks ادغام در وب سایت Slack بازیابی کنید. آرگومان hook باید کل URL وب هوک ارائه شده توسط Incoming Webhooks Slack Integration باشد. مثلا:

https://hooks.slack.com/services/ZZZZZZZZZ/YYYYYYYYY/XXXXXXXXXXXXXXX

می توانید یکی از موارد زیر را برای آرگومان کانال ارائه دهید:

  • برای ارسال اعلان به یک کانال: #channel
  • برای ارسال اعلان به کاربر: @user

اگر channel آرگومان ارائه نشود، از کانال پیش فرض استفاده خواهد شد.

توجه: اعلان‌های Slack فقط در صورتی ارسال می‌شوند که همه کارها با موفقیت انجام شوند.

به روز رسانی فرستاده

برای به روز رسانی Envoy، به سادگی از Composer استفاده کنید:

composer global update