Вступление
Laravel Envoy предоставляет чистый, минимальный синтаксис для определения общих задач, которые вы запускаете на своих удаленных серверах. Используя синтаксис в стиле Blade, вы можете легко настроить задачи для развертывания, команды Artisan и многое другое. В настоящее время Envoy поддерживает только операционные системы Mac и Linux.
Установка
Сначала установите Envoy с помощью команды Composer :global require
composer global require laravel/envoy
Поскольку глобальные библиотеки Composer могут иногда вызывать конфликты версий пакетов, вы можете рассмотреть возможность их использования cgr
, что является заменой команды. В инструкции по установке библиотеки можно найти на GitHub .composer global require
cgr
Обязательно поместите каталог в PATH, чтобы найти исполняемый файл при запуске команды в вашем терминале.
~/.composer/vendor/bin
envoy
envoy
Обновление посланника
Вы также можете использовать Composer, чтобы обновлять установку Envoy. Выполнение команды обновит все ваши глобально установленные пакеты Composer:composer global update
composer global update
Письменные задачи
Все ваши задачи Envoy должны быть определены в файле в корне вашего проекта. Вот пример для начала:Envoy.blade.php
@servers(['web' => ['user@192.168.1.1']])
@task('foo', ['on' => 'web'])
ls -la
@endtask
Как вы можете видеть, @servers
в верхней части файла определен массив , позволяющий вам ссылаться на эти серверы в on
опциях объявлений ваших задач. В ваших @task
декларациях вы должны разместить код Bash, который должен запускаться на вашем сервере при выполнении задачи.
Вы можете заставить скрипт запускаться локально, указав IP-адрес сервера как :127.0.0.1
@servers(['localhost' => '127.0.0.1'])
Настроить
Иногда вам может потребоваться выполнить некоторый PHP-код перед выполнением ваших задач Envoy. Вы можете использовать @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 с помощью командной строки:
envoy run deploy --branch=master
Вы можете получить доступ к опциям в ваших задачах через синтаксис Blade "echo". Вы также можете использовать 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
Рассказы
Истории объединяют набор задач под одним удобным именем, позволяя группировать небольшие целевые задачи в большие. Например, 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 , передав имя задачи или истории, которую вы хотите выполнить. Envoy запустит задачу и отобразит вывод с серверов во время выполнения задачи:Envoy.blade.php
run
envoy run deploy
Подтверждение выполнения задачи
Если вы хотели бы получить запрос на подтверждение перед запуском данной задачи на своих серверах, вы должны добавить confirm
директиву в декларацию вашей задачи. Эта опция особенно полезна для разрушительных операций:
@task('deploy', ['on' => 'web', 'confirm' => true])
cd site
git pull origin {{ $branch }}
php artisan migrate
@endtask
Уведомления
Слабина
Envoy также поддерживает отправку уведомлений в Slack после выполнения каждой задачи. @slack
Директива принимает слабину URL крюка и название канала. Вы можете получить URL своего веб-крючка, создав интеграцию «Входящие веб-крючки» в своей панели управления Slack. Вы должны передать весь URL-адрес webhook в @slack
директиву:
@finished
@slack('webhook-url', '#bots')
@endfinished
В качестве аргумента канала вы можете указать одно из следующих:
- Чтобы отправить уведомление на канал:
#channel
- Чтобы отправить уведомление пользователю:
@user
Диссонанс
Envoy также поддерживает отправку уведомлений в Discord после выполнения каждой задачи. @discord
Директива принимает крюк URL раздора и сообщение. Вы можете получить URL своего веб-крючка, создав «Веб-крючок» в настройках своего сервера и выбрав, на каком канале должен публиковаться веб-крючок. Вы должны передать весь URL Webhook в @discord
директиву:
@finished
@discord('discord-webhook-url')
@endfinished
0 комментариев