fix(railpack): create empty build-time env file
This commit is contained in:
parent
623bf89543
commit
2dc34f61ff
2 changed files with 42 additions and 2 deletions
|
|
@ -1833,8 +1833,8 @@ private function save_buildtime_environment_variables()
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
} elseif ($this->build_pack === 'dockercompose' || $this->build_pack === 'dockerfile') {
|
} elseif (in_array($this->build_pack, ['dockercompose', 'dockerfile', 'railpack'], true)) {
|
||||||
// For Docker Compose and Dockerfile, create an empty .env file even if there are no build-time variables
|
// For build packs that source the build-time .env file, create an empty file even if there are no build-time variables
|
||||||
// This ensures the file exists when referenced in build commands
|
// This ensures the file exists when referenced in build commands
|
||||||
$this->application_deployment_queue->addLogEntry('Creating empty build-time .env file in /artifacts (no build-time variables defined).', hidden: true);
|
$this->application_deployment_queue->addLogEntry('Creating empty build-time .env file in /artifacts (no build-time variables defined).', hidden: true);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,8 @@
|
||||||
use App\Exceptions\DeploymentException;
|
use App\Exceptions\DeploymentException;
|
||||||
use App\Jobs\ApplicationDeploymentJob;
|
use App\Jobs\ApplicationDeploymentJob;
|
||||||
use App\Models\Application;
|
use App\Models\Application;
|
||||||
|
use App\Models\ApplicationSetting;
|
||||||
|
use App\Models\EnvironmentVariable;
|
||||||
use Illuminate\Support\Collection;
|
use Illuminate\Support\Collection;
|
||||||
use Tests\TestCase;
|
use Tests\TestCase;
|
||||||
|
|
||||||
|
|
@ -280,3 +282,41 @@ function invokeRailpackMethod(object $job, ReflectionClass $reflection, string $
|
||||||
expect($command)->toContain("--secret 'id=BETTER_AUTH_URL,env=BETTER_AUTH_URL'");
|
expect($command)->toContain("--secret 'id=BETTER_AUTH_URL,env=BETTER_AUTH_URL'");
|
||||||
expect($command)->toContain("--secret 'id=COOLIFY_URL,env=COOLIFY_URL'");
|
expect($command)->toContain("--secret 'id=COOLIFY_URL,env=COOLIFY_URL'");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('creates an empty build-time env file for railpack when there are no generated build-time variables', function () {
|
||||||
|
[$job, $reflection] = makeRailpackDeploymentJob([
|
||||||
|
'build_pack' => 'railpack',
|
||||||
|
'compose_parsing_version' => '3',
|
||||||
|
]);
|
||||||
|
|
||||||
|
$applicationProperty = $reflection->getProperty('application');
|
||||||
|
$applicationProperty->setAccessible(true);
|
||||||
|
$application = $applicationProperty->getValue($job);
|
||||||
|
$application->setRelation('settings', new ApplicationSetting([
|
||||||
|
'include_source_commit_in_build' => false,
|
||||||
|
'is_env_sorting_enabled' => false,
|
||||||
|
]));
|
||||||
|
$application->setRelation('environment_variables', collect([
|
||||||
|
new EnvironmentVariable(['key' => 'COOLIFY_FQDN']),
|
||||||
|
new EnvironmentVariable(['key' => 'COOLIFY_URL']),
|
||||||
|
new EnvironmentVariable(['key' => 'COOLIFY_BRANCH']),
|
||||||
|
new EnvironmentVariable(['key' => 'COOLIFY_RESOURCE_UUID']),
|
||||||
|
]));
|
||||||
|
|
||||||
|
foreach ([
|
||||||
|
'application_deployment_queue' => new class
|
||||||
|
{
|
||||||
|
public function addLogEntry(string $message, string $type = 'info', bool $hidden = false): void {}
|
||||||
|
},
|
||||||
|
'build_pack' => 'railpack',
|
||||||
|
'pull_request_id' => 0,
|
||||||
|
] as $property => $value) {
|
||||||
|
$reflectionProperty = $reflection->getProperty($property);
|
||||||
|
$reflectionProperty->setAccessible(true);
|
||||||
|
$reflectionProperty->setValue($job, $value);
|
||||||
|
}
|
||||||
|
|
||||||
|
invokeRailpackMethod($job, $reflection, 'save_buildtime_environment_variables');
|
||||||
|
|
||||||
|
expect(collect($job->recordedCommands)->flatten()->implode(' '))->toContain('touch /artifacts/build-time.env');
|
||||||
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue