mirror of
https://github.com/vitodeploy/vito.git
synced 2025-07-01 14:06:15 +00:00
fix githook deletion
This commit is contained in:
@ -3,13 +3,11 @@
|
|||||||
namespace App\Http\Controllers\API;
|
namespace App\Http\Controllers\API;
|
||||||
|
|
||||||
use App\Actions\Site\Deploy;
|
use App\Actions\Site\Deploy;
|
||||||
use App\Exceptions\SourceControlIsNotConnected;
|
use App\Exceptions\FailedToDestroyGitHook;
|
||||||
use App\Facades\Notifier;
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Models\GitHook;
|
use App\Models\GitHook;
|
||||||
use App\Models\ServerLog;
|
use App\Models\ServerLog;
|
||||||
use App\Models\SourceControl;
|
use App\Models\SourceControl;
|
||||||
use App\Notifications\SourceControlDisconnected;
|
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
@ -18,6 +16,9 @@
|
|||||||
|
|
||||||
class GitHookController extends Controller
|
class GitHookController extends Controller
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* @throws FailedToDestroyGitHook
|
||||||
|
*/
|
||||||
#[Any('api/git-hooks', name: 'api.git-hooks')]
|
#[Any('api/git-hooks', name: 'api.git-hooks')]
|
||||||
public function __invoke(Request $request): JsonResponse
|
public function __invoke(Request $request): JsonResponse
|
||||||
{
|
{
|
||||||
@ -30,6 +31,14 @@ public function __invoke(Request $request): JsonResponse
|
|||||||
->where('secret', $request->input('secret'))
|
->where('secret', $request->input('secret'))
|
||||||
->firstOrFail();
|
->firstOrFail();
|
||||||
|
|
||||||
|
if (! $gitHook->site) {
|
||||||
|
$gitHook->destroyHook();
|
||||||
|
|
||||||
|
return response()->json([
|
||||||
|
'success' => true,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
foreach ($gitHook->actions as $action) {
|
foreach ($gitHook->actions as $action) {
|
||||||
/** @var SourceControl $sourceControl */
|
/** @var SourceControl $sourceControl */
|
||||||
$sourceControl = $gitHook->site->sourceControl;
|
$sourceControl = $gitHook->site->sourceControl;
|
||||||
@ -37,8 +46,6 @@ public function __invoke(Request $request): JsonResponse
|
|||||||
if ($action == 'deploy' && $gitHook->site->branch === $webhookBranch) {
|
if ($action == 'deploy' && $gitHook->site->branch === $webhookBranch) {
|
||||||
try {
|
try {
|
||||||
app(Deploy::class)->run($gitHook->site);
|
app(Deploy::class)->run($gitHook->site);
|
||||||
} catch (SourceControlIsNotConnected) {
|
|
||||||
Notifier::send($gitHook->sourceControl, new SourceControlDisconnected($gitHook->sourceControl));
|
|
||||||
} catch (Throwable $e) {
|
} catch (Throwable $e) {
|
||||||
ServerLog::log(
|
ServerLog::log(
|
||||||
$gitHook->site->server,
|
$gitHook->site->server,
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
* @property array<string, mixed> $actions
|
* @property array<string, mixed> $actions
|
||||||
* @property string $hook_id
|
* @property string $hook_id
|
||||||
* @property array<string, mixed> $hook_response
|
* @property array<string, mixed> $hook_response
|
||||||
* @property Site $site
|
* @property ?Site $site
|
||||||
* @property SourceControl $sourceControl
|
* @property SourceControl $sourceControl
|
||||||
*/
|
*/
|
||||||
class GitHook extends AbstractModel
|
class GitHook extends AbstractModel
|
||||||
|
@ -118,6 +118,11 @@ public static function boot(): void
|
|||||||
$site->ssls()->delete();
|
$site->ssls()->delete();
|
||||||
$site->deployments()->delete();
|
$site->deployments()->delete();
|
||||||
$site->deploymentScript()->delete();
|
$site->deploymentScript()->delete();
|
||||||
|
try {
|
||||||
|
$site->gitHook?->destroyHook();
|
||||||
|
} catch (FailedToDestroyGitHook) {
|
||||||
|
$site->refresh()->gitHook?->delete();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
static::created(function (Site $site): void {
|
static::created(function (Site $site): void {
|
||||||
|
Reference in New Issue
Block a user