fix: only escape envs after v239+

This commit is contained in:
Andras Bacsai 2024-03-18 11:36:36 +01:00
parent 460451bcce
commit 76f7cd08ee
3 changed files with 56 additions and 20 deletions

View File

@ -1360,45 +1360,40 @@ private function generate_environment_variables($ports)
if ($this->pull_request_id === 0) {
foreach ($this->application->runtime_environment_variables as $env) {
// This is necessary because we have to escape the value of the environment variable
// but only if the environment variable is created after the 15th of March 2024
// but only if the environment variable is created after 4.0.0-beta.240
// when I implemented the escaping feature.
// Old environment variables are not escaped, because it could break the application
// as the application could expect the unescaped value.
// Yes, I worked on March 15th, 2024, and I implemented this feature.
// It was a national holiday in Hungary.
// Welcome to the life of a solopreneur.
if ($env->created_at > '2024-03-15T20:42:42.000000Z') {
$real_value = escapeEnvVariables($env->real_value);
} else {
if ($env->version === '4.0.0-beta.239') {
$real_value = $env->value;
} else {
$real_value = escapeEnvVariables($env->real_value);
}
$environment_variables->push("$env->key=$real_value");
}
foreach ($this->application->nixpacks_environment_variables as $env) {
if ($env->created_at > '2024-03-15T20:42:42.000000Z') {
$real_value = escapeEnvVariables($env->real_value);
} else {
if ($env->version === '4.0.0-beta.239') {
$real_value = $env->value;
} else {
$real_value = escapeEnvVariables($env->real_value);
}
$environment_variables->push("$env->key=$real_value");
}
} else {
foreach ($this->application->runtime_environment_variables_preview as $env) {
if ($env->created_at > '2024-03-15T20:42:42.000000Z') {
$real_value = escapeEnvVariables($env->real_value);
} else {
if ($env->version === '4.0.0-beta.239') {
$real_value = $env->value;
} else {
$real_value = escapeEnvVariables($env->real_value);
}
$environment_variables->push("$env->key=$real_value");
}
foreach ($this->application->nixpacks_environment_variables_preview as $env) {
if ($env->created_at > '2024-03-15T20:42:42.000000Z') {
$real_value = escapeEnvVariables($env->real_value);
} else {
if ($env->version === '4.0.0-beta.239') {
$real_value = $env->value;
} else {
$real_value = escapeEnvVariables($env->real_value);
}
$environment_variables->push("$env->key=$real_value");
}

View File

@ -14,12 +14,15 @@ class EnvironmentVariable extends Model
'key' => 'string',
'value' => 'encrypted',
'is_build_time' => 'boolean',
'is_multiline' => 'boolean',
'is_preview' => 'boolean',
'version' => 'string'
];
protected $appends = ['real_value', 'is_shared'];
protected static function booted()
{
static::created(function ($environment_variable) {
static::created(function (EnvironmentVariable $environment_variable) {
if ($environment_variable->application_id && !$environment_variable->is_preview) {
$found = ModelsEnvironmentVariable::where('key', $environment_variable->key)->where('application_id', $environment_variable->application_id)->where('is_preview', true)->first();
$application = Application::find($environment_variable->application_id);
@ -31,11 +34,15 @@ protected static function booted()
'key' => $environment_variable->key,
'value' => $environment_variable->value,
'is_build_time' => $environment_variable->is_build_time,
'is_multiline' => $environment_variable->is_multiline,
'application_id' => $environment_variable->application_id,
'is_preview' => true,
'is_preview' => true
]);
}
}
$environment_variable->update([
'version' => config('version')
]);
});
}
public function service()

View File

@ -0,0 +1,34 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('environment_variables', function (Blueprint $table) {
$table->string('version')->default('4.0.0-beta.239');
});
Schema::table('shared_environment_variables', function (Blueprint $table) {
$table->string('version')->default('4.0.0-beta.239');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('environment_variables', function (Blueprint $table) {
$table->dropColumn('version');
});
Schema::table('shared_environment_variables', function (Blueprint $table) {
$table->dropColumn('version');
});
}
};