erstellen macro
in Ihrem Envoy.blade.php
, lesen Sie mehr: https://laravel.com/docs/5.2/envoy
@macro('deploy')
//your commands here
@endmacro
Die yo es durch die Symfony-Prozess aufrufen können (http://symfony.com/doc/current/components/process.html#usage), etwa so:
$process = new Process("/home/$user/.composer/vendor/bin/envoy run deploy");
$process->setTimeout(3600);
$process->setIdleTimeout(300);
$process->setWorkingDirectory(base_path());
$process->run(function ($type, $buffer)
{
//print output
});
es noch besser einige erstellen externe Klasse dafür.
<?php
namespace App\Services;
use Symfony\Component\Process\Process;
class Envoy
{
public function run($task, $live = false)
{
$result = [];
$process = new Process('~/.composer/vendor/bin/envoy run '. $task);
$process->setTimeout(3600);
$process->setIdleTimeout(300);
$process->setWorkingDirectory(base_path());
$process->run(
function ($type, $buffer) use ($live, &$result) {
$buffer = str_replace('[127.0.0.1]: ', '', $buffer);
if ($live) {
echo $buffer . '</br />';
}
$result[] = $buffer;
}
);
return $result;
}
}
Und es vom Controller nennen:
public function store(Request $request, Envoy $envoy)
{
$group = $this->group->create($request->all());
$result = $envoy->run('<some command>');
// Do something with $result...
}
Credits: https://laracasts.com/discuss/channels/general-discussion/run-envoy-from-controller
https://laravel.com/docs/5.2/envoy – GONG
@GONG Ja, sah das schon, aber ich kann nicht bekommen, wie man Abgesandten Befehl von meinem Controller – ArtemSky
Ich glaube nicht, dass es eine "Laravel Art und Weise", dies zu tun ist. Sie können jedoch 'exec' oder' shell_exec' verwenden. – Jonathon