Compare commits

...

12 Commits

Author SHA1 Message Date
Andras Bacsai
3f34df251e Merge pull request #3310 from coollabsio/next
v4.0.0-beta.329
2024-09-04 14:35:34 +02:00
Andras Bacsai
bfeaae9caa fix: env variable in value parsed 2024-09-04 14:33:16 +02:00
Andras Bacsai
ba90a52344 Update version to 4.0.0-beta.329 2024-09-04 14:10:19 +02:00
Andras Bacsai
a3a61dbe55 refactor: Update Docker Compose location handling in PublicGitRepository 2024-09-04 14:09:55 +02:00
Andras Bacsai
5799e6d8b0 fix: logical volumes could be overwritten with new path 2024-09-04 14:09:52 +02:00
Andras Bacsai
b2944f11db Merge pull request #3308 from coollabsio/next
v4.0.0-beta.328
2024-09-04 13:38:19 +02:00
Andras Bacsai
25e2b812cb fix: Convert environment variables to one format in shared.php 2024-09-04 13:37:15 +02:00
Andras Bacsai
59383d3678 Update README.md 2024-09-04 13:04:09 +02:00
Andras Bacsai
7b2d09f9d1 Update README.md 2024-09-04 12:44:22 +02:00
Andras Bacsai
d30faf7bc4 refactor: Update background color of sponsor section in README.md 2024-09-04 12:30:53 +02:00
Andras Bacsai
b9d3f9da62 chore: Update Coolify version to 4.0.0-beta.328 2024-09-04 12:30:02 +02:00
Andras Bacsai
86ee9c09ce feat: Add new logos for GlueOps, Ubicloud, Juxtdigital, Saasykit, and Massivegrid 2024-09-04 12:28:57 +02:00
11 changed files with 59 additions and 57 deletions

View File

@@ -35,28 +35,31 @@ Thank you so much!
Special thanks to our biggest sponsors! Special thanks to our biggest sponsors!
<a href="https://cccareers.org/" target="_blank"><img src="./other/logos/ccc-logo.webp" alt="cccareers logo" width="200"/></a> ### Special Sponsors
<a href="http://htznr.li/CoolifyXHetzner" target="_blank"><img src="./other/logos/hetzner.jpg" alt="hetzner logo" width="150"/></a>
<a href="https://logto.io/?ref=coolify" target="_blank"><img src="./other/logos/logto.webp" alt="logto logo" width="150"/></a>
<a href="https://bc.direct/?ref=coolify.io" target="_blank"><img src="./other/logos/bc.png" alt="bc direct logo" width="200"/></a>
<a href="https://www.quantcdn.io/?ref=coolify.io" target="_blank"><img src="./other/logos/quant.svg" alt="quantcdn logo" width="150"/></a>
<a href="https://arcjet.com/?ref=coolify.io" target="_blank"><img src="./other/logos/arcjet.svg" alt="arcjet logo" width="200"/></a>
<a href="https://supa.guide/?ref=coolify.io" target="_blank"><img src="./other/logos/supaguide.png" alt="supaguide logo" width="200"/></a>
<a href="https://tigrisdata.com/?ref=coolify.io" target="_blank"><img src="./other/logos/tigris.svg" alt="tigris logo" width="140"/></a>
<a href="https://fractalnetworks.co/?ref=coolify.io" target="_blank"><img src="./other/logos/fractal.svg" alt="fractal logo" width="180"/></a>
<a href="https://coolify.ad.vin/?ref=coolify.io" target="_blank"><img src="./other/logos/advin.png" alt="advin logo" width="250"/></a>
<a href="https://trieve.ai/?ref=coolify.io" target="_blank"><img src="./other/logos/trieve_bg.png" alt="trieve logo" width="180"/></a>
<a href="https://blacksmith.sh/?ref=coolify.io" target="_blank"><img src="./other/logos/blacksmith.svg" alt="blacksmith logo" width="200"/></a>
<a href="https://latitude.sh/?ref=coolify.io" target="_blank"><img src="./other/logos/latitude.svg" alt="latitude logo" width="200"/></a>
<a href="https://brand.dev/?ref=coolify.io" target="_blank"><img src="./other/logos/branddev.png" alt="branddev logo" width="200"/></a>
<a href="https://jobscollider.com/remote-jobs?ref=coolify.io" target="_blank"><img src="./other/logos/jobscollider.svg" alt="jobscollider logo" width="200"/></a>
<a href="https://hostinger.com?ref=coolify.io" target="_blank"><img src="./other/logos/hostinger.svg" alt="hostinger logo" width="200"/></a>
<a href="https://www.glueops.dev/?ref=coolify.io" target="_blank"><img src="./other/logos/glueops.webp" alt="glueops logo" width="60"/></a>
<a href="https://ubicloud.com/?ref=coolify.io" target="_blank"><img src="./other/logos/ubicloud.svg" alt="ubicloud logo" width="200"/></a>
<a href="https://juxtdigital.dev/?ref=coolify.io" target="_blank"><img src="./other/logos/juxtdigital.png" alt="juxtdigital logo" width="200"/></a>
<a href="https://saasykit.com/?ref=coolify.io" target="_blank"><img src="./other/logos/saasykit.png" alt="saasykit logo" width="200"/></a>
<a href="https://massivegrid.com/?ref=coolify.io" target="_blank"><img src="./other/logos/massivegrid.svg" alt="massivegrid logo" width="200"/></a>
![image](https://github.com/user-attachments/assets/c95a07df-7c5a-4e77-a35a-81f25fcbece1)
* [CCCareers](https://cccareers.org/) - A career development platform for coding bootcamp graduates.
* [Hetzner](http://htznr.li/CoolifyXHetzner) - A German web hosting company offering dedicated servers and cloud services.
* [Logto](https://logto.io/?ref=coolify) - An open-source authentication and authorization platform.
* [BC Direct](https://bc.direct/?ref=coolify.io) - A digital marketing agency specializing in e-commerce solutions.
* [QuantCDN](https://www.quantcdn.io/?ref=coolify.io) - A content delivery network (CDN) for fast content delivery.
* [Arcjet](https://arcjet.com/?ref=coolify.io) - A cloud-based platform for data analytics and visualization.
* [SupaGuide](https://supa.guide/?ref=coolify.io) - A platform offering guides and resources for web development and design.
* [Tigris](https://tigrisdata.com/?ref=coolify.io) - A data integration platform for connecting and managing data sources.
* [Fractal Networks](https://fractalnetworks.co/?ref=coolify.io) - A decentralized network infrastructure for secure data exchange.
* [Advin](https://coolify.ad.vin/?ref=coolify.io) - A digital advertising agency specializing in programmatic advertising.
* [Treive](https://trieve.ai/?ref=coolify.io) - An AI-powered data analytics platform for business insights.
* [Blacksmith](https://blacksmith.sh/?ref=coolify.io) - A cloud-based platform for automating DevOps and infrastructure management.
* [Latitude](https://latitude.sh/?ref=coolify.io) - A platform offering location-based services and geospatial data.
* [Brand Dev](https://brand.dev/?ref=coolify.io) - A web development agency specializing in brand identity and digital presence.
* [Jobscollider](https://jobscollider.com/remote-jobs?ref=coolify.io) - A job search platform specializing in remote and flexible work opportunities.
* [Hostinger](https://hostinger.com?ref=coolify.io) - A web hosting company offering shared, VPS, and cloud hosting services.
* [Glueops](https://www.glueops.dev/?ref=coolify.io) - A DevOps and cloud consulting company offering infrastructure automation services.
* [Ubicloud](https://ubicloud.com/?ref=coolify.io) - A cloud-based platform for IoT device management and data analytics.
* [Juxtdigital](https://juxtdigital.dev/?ref=coolify.io) - A digital agency offering web development, design, and marketing services.
* [Saasykit](https://saasykit.com/?ref=coolify.io) - SaaSykit is a Laravel-based boilerplate with everything you need to build an awesome SaaS.
* [Massivegrid](https://massivegrid.com/?ref=coolify.io) - A cloud-based platform for data storage and processing.
## Github Sponsors ($40+) ## Github Sponsors ($40+)

View File

@@ -99,6 +99,16 @@ class PublicGitRepository extends Component
} }
} }
public function updatedDockerComposeLocation()
{
if ($this->docker_compose_location) {
$this->docker_compose_location = rtrim($this->docker_compose_location, '/');
if (! str($this->docker_compose_location)->startsWith('/')) {
$this->docker_compose_location = '/'.$this->docker_compose_location;
}
}
}
public function updatedBuildPack() public function updatedBuildPack()
{ {
if ($this->build_pack === 'nixpacks') { if ($this->build_pack === 'nixpacks') {

View File

@@ -43,6 +43,7 @@ class EditCompose extends Component
{ {
$this->dispatch('info', 'Saving new docker compose...'); $this->dispatch('info', 'Saving new docker compose...');
$this->dispatch('saveCompose', $this->service->docker_compose_raw); $this->dispatch('saveCompose', $this->service->docker_compose_raw);
$this->dispatch('refreshStorages');
} }
public function instantSave() public function instantSave()

View File

@@ -24,6 +24,7 @@ class All extends Component
protected $listeners = [ protected $listeners = [
'saveKey' => 'submit', 'saveKey' => 'submit',
'refreshEnvs',
'environmentVariableDeleted' => 'refreshEnvs', 'environmentVariableDeleted' => 'refreshEnvs',
]; ];
@@ -61,7 +62,7 @@ class All extends Component
$sortBy = data_get($this->resource, 'settings.is_env_sorting_enabled') ? 'key' : 'order'; $sortBy = data_get($this->resource, 'settings.is_env_sorting_enabled') ? 'key' : 'order';
$sortFunction = function ($variables) use ($sortBy) { $sortFunction = function ($variables) use ($sortBy) {
if (!$variables) { if (! $variables) {
return $variables; return $variables;
} }
if ($sortBy === 'key') { if ($sortBy === 'key') {

View File

@@ -136,4 +136,4 @@ class Show extends Component
return handleError($e); return handleError($e);
} }
} }
} }

View File

@@ -3092,10 +3092,9 @@ function newParser(Application|Service $resource, int $pull_request_id = 0, ?int
$topLevel->get('volumes')->put($name, [ $topLevel->get('volumes')->put($name, [
'name' => $name, 'name' => $name,
]); ]);
LocalPersistentVolume::updateOrCreate( LocalPersistentVolume::updateOrCreate(
[ [
'mount_path' => $target, 'name' => $name,
'resource_id' => $originalResource->id, 'resource_id' => $originalResource->id,
'resource_type' => get_class($originalResource), 'resource_type' => get_class($originalResource),
], ],
@@ -3332,7 +3331,10 @@ function newParser(Application|Service $resource, int $pull_request_id = 0, ?int
foreach ($normalEnvironments as $key => $value) { foreach ($normalEnvironments as $key => $value) {
$key = str($key); $key = str($key);
$value = str($value); $value = str($value);
if ($value->startsWith('$')) { if ($value->startsWith('$') || $value->contains('${')) {
if ($value->contains('${')) {
$value = $value->after('${')->before('}');
}
$value = str(replaceVariables(str($value))); $value = str(replaceVariables(str($value)));
if ($value->contains(':-')) { if ($value->contains(':-')) {
$key = $value->before(':'); $key = $value->before(':');
@@ -3639,37 +3641,22 @@ function add_coolify_default_environment_variables(StandaloneRedis|StandalonePos
$where_to_add->push("COOLIFY_PROJECT_NAME={$resource->project()->name}"); $where_to_add->push("COOLIFY_PROJECT_NAME={$resource->project()->name}");
} }
} }
ray($where_to_add);
} }
function convertComposeEnvironmentToArray($environment) function convertComposeEnvironmentToArray($environment)
{ {
$convertedServiceVariables = collect([]); $convertedServiceVariables = collect([]);
foreach ($environment as $variableName => $variableValue) { if (isAssociativeArray($environment)) {
if (is_array($variableValue)) { $convertedServiceVariables = $environment;
$key = str(collect($variableValue)->keys()->first()); } else {
$value = str(collect($variableValue)->values()->first()); foreach ($environment as $value) {
} elseif (is_string($variableValue)) { $parts = explode('=', $value, 2);
if (str($variableValue)->contains('=')) { $key = $parts[0];
$key = str($variableValue)->before('='); $realValue = $parts[1] ?? '';
$value = str($variableValue)->after('='); if ($key) {
} else { $convertedServiceVariables->put($key, $realValue);
if (is_numeric($variableName)) {
$key = str($variableValue);
$value = null;
} else {
$key = str($variableName);
if ($variableValue) {
$value = str($variableValue);
} else {
$value = null;
}
}
} }
} }
if ($key) {
$convertedServiceVariables->put($key->value(), $value?->value() ?? null);
}
} }
return $convertedServiceVariables; return $convertedServiceVariables;

View File

@@ -7,7 +7,7 @@ return [
// The release version of your application // The release version of your application
// Example with dynamic git hash: trim(exec('git --git-dir ' . base_path('.git') . ' log --pretty="%h" -n1 HEAD')) // Example with dynamic git hash: trim(exec('git --git-dir ' . base_path('.git') . ' log --pretty="%h" -n1 HEAD'))
'release' => '4.0.0-beta.327', 'release' => '4.0.0-beta.329',
// When left empty or `null` the Laravel environment will be used // When left empty or `null` the Laravel environment will be used
'environment' => config('app.env'), 'environment' => config('app.env'),

View File

@@ -1,3 +1,3 @@
<?php <?php
return '4.0.0-beta.327'; return '4.0.0-beta.329';

BIN
other/logos/saasykit.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

View File

@@ -4,7 +4,7 @@
<form class="flex flex-col gap-2" wire:submit='loadBranch'> <form class="flex flex-col gap-2" wire:submit='loadBranch'>
<div class="flex flex-col gap-2"> <div class="flex flex-col gap-2">
<div class="flex flex-col gap-2"> <div class="flex flex-col gap-2">
<div class="flex items-end gap-2"> <div class="flex gap-2 items-end">
<x-forms.input required id="repository_url" label="Repository URL (https://)" <x-forms.input required id="repository_url" label="Repository URL (https://)"
helper="{!! __('repository.url') !!}" /> helper="{!! __('repository.url') !!}" />
<x-forms.button type="submit"> <x-forms.button type="submit">
@@ -47,7 +47,7 @@
@if ($build_pack === 'dockercompose') @if ($build_pack === 'dockercompose')
<x-forms.input placeholder="/" wire:model.blur="base_directory" label="Base Directory" <x-forms.input placeholder="/" wire:model.blur="base_directory" label="Base Directory"
helper="Directory to use as root. Useful for monorepos." /> helper="Directory to use as root. Useful for monorepos." />
<x-forms.input placeholder="/docker-compose.yaml" id="docker_compose_location" <x-forms.input placeholder="/docker-compose.yaml" wire:model.blur="docker_compose_location"
label="Docker Compose Location" label="Docker Compose Location"
helper="It is calculated together with the Base Directory:<br><span class='dark:text-warning'>{{ Str::start($base_directory . $docker_compose_location, '/') }}</span>" /> helper="It is calculated together with the Base Directory:<br><span class='dark:text-warning'>{{ Str::start($base_directory . $docker_compose_location, '/') }}</span>" />
Compose file location in your repository:<span Compose file location in your repository:<span

View File

@@ -1,10 +1,10 @@
{ {
"coolify": { "coolify": {
"v4": { "v4": {
"version": "4.0.0-beta.327" "version": "4.0.0-beta.329"
}, },
"nightly": { "nightly": {
"version": "4.0.0-beta.328" "version": "4.0.0-beta.330"
} }
} }
} }