mirror of
https://github.com/coollabsio/coolify.git
synced 2026-11-06 13:10:37 -04:00
Merge remote-tracking branch 'origin/main' into release/v4.5
This commit is contained in:
@@ -2714,11 +2714,7 @@ class ApplicationDeploymentJob implements ShouldBeEncrypted, ShouldQueue
|
||||
if ($this->application->build_pack === 'dockerfile') {
|
||||
$this->add_build_env_variables_to_dockerfile();
|
||||
}
|
||||
if ($this->application->build_pack === 'railpack') {
|
||||
$this->build_railpack_image();
|
||||
} else {
|
||||
$this->build_image();
|
||||
}
|
||||
$this->build_pull_request_image();
|
||||
|
||||
// This overwrites the build-time .env with ALL variables (build-time + runtime)
|
||||
$this->save_runtime_environment_variables();
|
||||
@@ -2726,6 +2722,15 @@ class ApplicationDeploymentJob implements ShouldBeEncrypted, ShouldQueue
|
||||
$this->rolling_update();
|
||||
}
|
||||
|
||||
private function build_pull_request_image(): void
|
||||
{
|
||||
match ($this->application->build_pack) {
|
||||
'railpack' => $this->build_railpack_image(),
|
||||
'static' => $this->build_static_image(),
|
||||
default => $this->build_image(),
|
||||
};
|
||||
}
|
||||
|
||||
private function create_workdir()
|
||||
{
|
||||
if ($this->use_build_server) {
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Preview deployments of static build pack applications must build the image
|
||||
* from the generated nginx Dockerfile, not from a Dockerfile in the repository.
|
||||
*
|
||||
* @see https://github.com/coollabsio/coolify/issues/8238
|
||||
*/
|
||||
|
||||
use App\Jobs\ApplicationDeploymentJob;
|
||||
use App\Models\Application;
|
||||
use App\Models\ApplicationDeploymentQueue;
|
||||
|
||||
it('builds static build pack preview images from the generated nginx Dockerfile', function () {
|
||||
$application = new Application;
|
||||
$application->build_pack = 'static';
|
||||
$application->static_image = 'nginx:alpine';
|
||||
$application->custom_nginx_configuration = 'server { listen 80; }';
|
||||
|
||||
$queue = Mockery::mock(ApplicationDeploymentQueue::class);
|
||||
$queue->shouldReceive('addLogEntry');
|
||||
|
||||
$commands = [];
|
||||
$job = Mockery::mock(ApplicationDeploymentJob::class)->makePartial();
|
||||
$job->shouldReceive('execute_remote_command')->andReturnUsing(function (...$batch) use (&$commands) {
|
||||
foreach ($batch as $command) {
|
||||
$commands[] = $command[0];
|
||||
}
|
||||
});
|
||||
|
||||
foreach ([
|
||||
'application' => $application,
|
||||
'application_deployment_queue' => $queue,
|
||||
'deployment_uuid' => 'deployment-uuid',
|
||||
'pull_request_id' => 7,
|
||||
'workdir' => '/artifacts/deployment-uuid',
|
||||
'production_image_name' => 'preview-app:pr-7-abc',
|
||||
] as $property => $value) {
|
||||
(new ReflectionProperty(ApplicationDeploymentJob::class, $property))->setValue($job, $value);
|
||||
}
|
||||
|
||||
(new ReflectionMethod(ApplicationDeploymentJob::class, 'build_pull_request_image'))->invoke($job);
|
||||
|
||||
$writesGeneratedDockerfile = collect($commands)
|
||||
->contains(fn (string $command) => str_contains($command, 'tee /artifacts/deployment-uuid/Dockerfile'));
|
||||
|
||||
expect($writesGeneratedDockerfile)->toBeTrue();
|
||||
});
|
||||
Reference in New Issue
Block a user