فرستاده لاراول
معرفی
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