fix(servers): retain cloud instances awaiting IPs

Persist DigitalOcean, Hetzner, and Vultr servers before public IP
assignment, then backfill placeholder addresses from provider state.

Treat partial Sentinel snapshots as non-authoritative and document the
destinations API with OpenAPI schemas.
This commit is contained in:
Andras Bacsai
2026-07-11 21:35:10 +02:00
parent d3fbb32c52
commit e01b8a057e
29 changed files with 1275 additions and 59 deletions
@@ -3,12 +3,14 @@
use App\Exceptions\DeploymentException;
use App\Jobs\ApplicationDeploymentJob;
use App\Models\Application;
use App\Models\ApplicationDeploymentQueue;
use App\Models\ApplicationSetting;
use App\Models\EnvironmentVariable;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Support\Collection;
use Tests\TestCase;
uses(TestCase::class);
uses(TestCase::class, RefreshDatabase::class);
class TestableRailpackDeploymentJob extends ApplicationDeploymentJob
{
@@ -373,9 +375,9 @@ it('creates an empty build-time env file for railpack when there are no generate
]));
foreach ([
'application_deployment_queue' => new class
'application_deployment_queue' => new class extends ApplicationDeploymentQueue
{
public function addLogEntry(string $message, string $type = 'info', bool $hidden = false): void {}
public function addLogEntry(string $message, string $type = 'stdout', bool $hidden = false): void {}
},
'build_pack' => 'railpack',
'pull_request_id' => 0,