Expose safe production build metadata
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
||||
final class BuildInfoController extends Controller
|
||||
{
|
||||
public function __invoke(): JsonResponse
|
||||
{
|
||||
$path = base_path('build-info.json');
|
||||
|
||||
if (! is_file($path) || ! is_readable($path)) {
|
||||
return response()->json(['error' => 'Build info unavailable'], 404)
|
||||
->header('Cache-Control', 'no-store, max-age=0');
|
||||
}
|
||||
|
||||
$decoded = json_decode((string) file_get_contents($path), true);
|
||||
|
||||
if (! is_array($decoded)) {
|
||||
return response()->json(['error' => 'Build info unavailable'], 404)
|
||||
->header('Cache-Control', 'no-store, max-age=0');
|
||||
}
|
||||
|
||||
$commit = trim((string) ($decoded['git_sha'] ?? ''));
|
||||
$release = trim((string) ($decoded['release_id'] ?? ''));
|
||||
$builtAt = trim((string) ($decoded['deployed_at_utc'] ?? ''));
|
||||
|
||||
if ($commit === '' || $release === '' || $builtAt === '') {
|
||||
return response()->json(['error' => 'Build info unavailable'], 404)
|
||||
->header('Cache-Control', 'no-store, max-age=0');
|
||||
}
|
||||
|
||||
return response()->json([
|
||||
'environment' => app()->environment(),
|
||||
'commit' => $commit,
|
||||
'built_at' => $builtAt,
|
||||
'release' => $release,
|
||||
])->header('Cache-Control', 'no-store, max-age=0');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user