نسخه:

فرستاده لاراول

معرفی

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

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

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

composer global require laravel/envoy

از آنجایی که کتابخانه‌های جهانی Composer گاهی اوقات می‌توانند باعث تضاد نسخه بسته شوند، ممکن است بخواهید از استفاده کنید cgr ، که جایگزینی برای composer global require دستور است. cgr دستورالعمل‌های نصب کتابخانه را می‌توانید در GitHub بیابید .

مطمئن شوید که دایرکتوری $HOME/.config/composer/vendor/bin یا را $HOME/.composer/vendor/bin در PATH خود قرار دهید تا هنگام اجرای دستور در ترمینال، 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

همانطور که می بینید، آرایه ای از @servers در بالای فایل تعریف شده است که به شما امکان می دهد به این سرورها در on گزینه اعلان وظایف خود ارجاع دهید. اظهارنامه @servers باید همیشه در یک خط قرار گیرد. در اعلان‌های خود @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 دیگری دارید، می توانید از @include دستورالعمل موجود در بالای Envoy.blade.php فایل خود استفاده کنید:

@include('vendor/autoload.php')
 
@task('foo')
# ...
@endtask

همچنین می‌توانید سایر فایل‌های Envoy را وارد کنید تا داستان‌ها و وظایف آن‌ها به شما اضافه شود. پس از وارد شدن آنها، می توانید وظایف موجود در آن فایل ها را به گونه ای اجرا کنید که گویی در خود شما تعریف شده اند. شما باید از @import دستورالعمل در بالای Envoy.blade.php فایل خود استفاده کنید:

@import('package/Envoy.blade.php')

متغیرها

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

envoy run deploy --branch=master

شما می توانید از طریق نحو "echo" Blade به گزینه های موجود در وظایف خود دسترسی داشته باشید. همچنین می توانید از if عبارات و حلقه ها در وظایف خود استفاده کنید. $branch به عنوان مثال، اجازه دهید قبل از اجرای دستور ، وجود متغیر را بررسی کنیم git pull :

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

داستان ها

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

هنگامی که داستان نوشته شد، می توانید آن را مانند یک کار معمولی اجرا کنید:

envoy run deploy

چندین سرور

Envoy به شما اجازه می دهد تا به راحتی یک کار را در چندین سرور اجرا کنید. ابتدا سرورهای اضافی را به @servers اعلان خود اضافه کنید. به هر سرور باید یک نام منحصر به فرد اختصاص داده شود. هنگامی که سرورهای اضافی خود را تعریف کردید، هر یک از سرورهای موجود در 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 deploy

تایید اجرای کار

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

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

اطلاعیه

سستی

Envoy همچنین از ارسال اعلان‌ها به Slack پس از اجرای هر وظیفه پشتیبانی می‌کند. این @slack دستورالعمل یک URL هوک Slack و نام کانال را می پذیرد. می‌توانید URL وب هوک خود را با ایجاد یک ادغام «WebHooks ورودی» در کنترل پنل Slack خود بازیابی کنید. شما باید کل URL webhook را به @slack دستورالعمل ارسال کنید:

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

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

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

اختلاف نظر

Envoy همچنین از ارسال اعلان‌ها به Discord پس از اجرای هر وظیفه پشتیبانی می‌کند. این @discord دستورالعمل URL هوک Discord و یک پیام را می پذیرد. می‌توانید با ایجاد یک «Webhook» در تنظیمات سرور خود و انتخاب کانالی که وب‌هوک باید در کدام کانال پست کند، URL وب هوک خود را بازیابی کنید. شما باید کل URL Webhook را به @discord دستورالعمل ارسال کنید:

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

تلگرام

Envoy همچنین از ارسال نوتیفیکیشن به تلگرام پس از انجام هر کار پشتیبانی می کند. این @telegram دستورالعمل شناسه ربات تلگرام و شناسه چت را می پذیرد. شما می توانید ID ربات خود را با ایجاد یک ربات جدید با استفاده از BotFather بازیابی کنید . با استفاده از @username_to_id_bot می‌توانید یک شناسه چت معتبر را بازیابی کنید . شما باید کل Bot ID و Chat ID را در @telegram دستورالعمل ارسال کنید:

@finished
@telegram('<bot-id>','<chat-id>')
@endfinished