Files
ABSDEV/Modules/CloudDevOps/Http/Controllers/CloudDevOpsController.php
T
Mark Gregory bc9427ac33 Deployment environments
* Development, staging, and production environment types
* Protected-environment support
* Deployment targets
* Local, SSH, Docker, and Kubernetes driver foundation
* Deployment pipelines
* Configurable pipeline steps
* Manual and approval-based releases
* Deployment release history
* Individual deployment-step tracking
* HTTP health checks
* Response-time tracking
* Rollback records
* Secret-reference metadata
* Encrypted target configuration
* Encrypted environment variables
* Administration dashboard
* Authenticated API endpoints
* Health-check command
* Release-history pruning command
* Permissions
* Sidebar integration
* Module registration
* Feature test
2026-07-24 13:57:56 +01:00

48 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.');
}
}