Как в envoy.blade написать такую строку?
В GitLab CI у меня есть две переменные: ПОЛЬЗОВАТЕЛЬ И ХОСТ.
В envoy.plade я хочу получить это:
@servers(['web' => 'user@host'])
Я пишу так:
@servers(['web' => '{{ getenv('USER') }}@{{ getenv('HOST') }}'])
Но получить ошибку, как написать?
2 ответа
Используйте автозагрузчик Composer и добавьте, а затем добавьте переменную окружения, такую как $DEPLOY_SERVER=user@host
на ваш .env
файл.
@include('vendor/autoload.php')
@setup
(new Dotenv\Dotenv(__DIR__, '.env'))->load();
$ssh = getenv('DEPLOY_SERVER');
@endsetup
@servers(['web' => $ssh])
@story('deploy')
composer
@endstory
@task('composer')
echo "Deployment complete, you connected as: {{ $ssh }}";
@endtask
<?php
//all below variables are coming from arguments passes with envoy run command
$name = isset($name) ? $name : null; //web
$task = isset($task) ? $task : null; //eg list
$command = isset($command) ? $command : null; //ls (command to run)
$ip = isset($ip) ? $ip : null; //suppose host is 127.0.0.1
$user = isset($user) ? $user : null;
?>
//Server Connection settings
{{ $__container->servers([$name => [str_replace('"', '', trim($ip)]])) }}
//Task Details and add the command to run
{{ $__container->startTask($task) }}
{{$command}}
{{ $__container->endTask() }}
//Open console and in project directory where envoy installed
//envoy command will be like this
envoy run list --task=list --name=web --command=ls --ip=127.0.0.1 --user=user