Files
ABSDEV/Modules/CloudDevOps/Http/Controllers/CloudDevOpsController.php
T
2026-07-24 14:59:44 +01:00

51 lines
2.1 KiB
PHP

<?php
namespace Modules\CloudDevOps\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\View\View;
use Modules\CloudDevOps\Models\DeploymentEnvironment;
use Modules\CloudDevOps\Models\DeploymentHealthCheck;
use Modules\CloudDevOps\Models\DeploymentPipeline;
use Modules\CloudDevOps\Models\DeploymentRelease;
use Modules\CloudDevOps\Services\DeploymentManager;
use Modules\CloudDevOps\Services\HealthCheckRunner;
final class CloudDevOpsController extends Controller
{
public function index(): View
{
return view('clouddevops::index', [
'environments' => DeploymentEnvironment::withCount(['targets', 'pipelines', 'releases'])->latest()->get(),
'releases' => DeploymentRelease::with('environment')->latest()->limit(10)->get(),
'checks' => DeploymentHealthCheck::with('environment')->latest('checked_at')->limit(10)->get(),
]);
}
public function storeEnvironment(Request $request): RedirectResponse
{
$data = $request->validate(['name' => 'required|string|max:120', 'slug' => 'required|alpha_dash|max:120|unique:deployment_environments,slug', 'type' => 'required|in:development,staging,production']);
DeploymentEnvironment::create($data);
return back()->with('status', 'Environment created.');
}
public function deploy(Request $request, DeploymentEnvironment $environment, DeploymentManager $manager): RedirectResponse
{
$data = $request->validate(['pipeline_id' => 'required|integer', 'version' => 'nullable|string|max:120', 'commit_hash' => 'nullable|string|max:120']);
$pipeline = DeploymentPipeline::where('environment_id', $environment->id)->findOrFail($data['pipeline_id']);
$manager->createRelease($environment, $pipeline, $data + ['requested_by' => $request->user()?->id]);
return back()->with('status', 'Release created.');
}
public function runCheck(DeploymentHealthCheck $check, HealthCheckRunner $runner): RedirectResponse
{
$runner->run($check);
return back()->with('status', 'Health check completed.');
}
}