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