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