diff --git a/app/config/variables.php b/app/config/variables.php index 011164db2..5a5e0e951 100644 --- a/app/config/variables.php +++ b/app/config/variables.php @@ -165,7 +165,7 @@ return [ ], [ 'name' => '_APP_DB_USER', - 'description' => 'MariaDB server user name. Default value is: \'root\'.', + 'description' => 'MariaDB server user name. Default value is: \'user\'.', 'introduction' => '', 'default' => 'user', 'required' => false, @@ -341,7 +341,7 @@ return [ 'name' => '_APP_FUNCTIONS_MEMORY', 'description' => 'The maximum amount of memory a single cloud function is allowed to use in megabytes. The default value is 128.', 'introduction' => '0.7.0', - 'default' => '128', + 'default' => '256', 'required' => false, 'question' => '', ], diff --git a/app/controllers/api/functions.php b/app/controllers/api/functions.php index 8932225b5..e5c663ffd 100644 --- a/app/controllers/api/functions.php +++ b/app/controllers/api/functions.php @@ -429,19 +429,19 @@ App::post('/v1/functions/:functionId/tags') ->label('sdk.namespace', 'functions') ->label('sdk.method', 'createTag') ->label('sdk.description', '/docs/references/functions/create-tag.md') + ->label('sdk.packaging', true) ->label('sdk.request.type', 'multipart/form-data') ->label('sdk.response.code', Response::STATUS_CODE_CREATED) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_TAG) ->param('functionId', '', new UID(), 'Function unique ID.') ->param('command', '', new Text('1028'), 'Code execution command.') - ->param('code', [], new File(), 'Gzip file containing your code.', false) - // ->param('code', '', new Text(128), 'Code package. Use the '.APP_NAME.' code packager to create a deployable package file.') + ->param('file', null, new File(), 'Gzip file with your code package.', false) ->inject('request') ->inject('response') ->inject('projectDB') ->inject('usage') - ->action(function ($functionId, $command, $code, $request, $response, $projectDB, $usage) { + ->action(function ($functionId, $command, $file, $request, $response, $projectDB, $usage) { /** @var Utopia\Swoole\Request $request */ /** @var Appwrite\Utopia\Response $response */ /** @var Appwrite\Database\Database $projectDB */ @@ -453,7 +453,7 @@ App::post('/v1/functions/:functionId/tags') throw new Exception('Function not found', 404); } - $file = $request->getFiles('code'); + $file = $request->getFiles('file'); $device = Storage::getDevice('functions'); $fileExt = new FileExt([FileExt::TYPE_GZIP]); $fileSize = new FileSize(App::getEnv('_APP_STORAGE_LIMIT', 0)); diff --git a/app/tasks/install.php b/app/tasks/install.php index 4cb5341f0..f855a086c 100644 --- a/app/tasks/install.php +++ b/app/tasks/install.php @@ -6,14 +6,12 @@ use Appwrite\Docker\Compose; use Appwrite\Docker\Env; use Utopia\CLI\Console; use Utopia\Config\Config; -use Utopia\Validator\Mock; use Utopia\View; $cli ->task('install') ->desc('Install Appwrite') - ->param('version', APP_VERSION_STABLE, new Mock(), 'Appwrite version', true) - ->action(function ($version) { + ->action(function () { /** * 1. Start - DONE * 2. Check for older setup and get older version - DONE @@ -130,7 +128,7 @@ $cli $templateForCompose ->setParam('httpPort', $httpPort) ->setParam('httpsPort', $httpsPort) - ->setParam('version', $version) + ->setParam('version', APP_VERSION_STABLE) ; $templateForEnv @@ -147,12 +145,19 @@ $cli Console::exit(1); } + $env = ''; $stdout = ''; $stderr = ''; + foreach ($input as $key => $value) { + if($value) { + $env .= $key.'='.$value.' '; + } + } + Console::log("Running \"docker-compose -f {$path}/docker-compose.yml up -d --remove-orphans --renew-anon-volumes\""); - $exit = Console::execute("docker-compose -f {$path}/docker-compose.yml up -d --remove-orphans --renew-anon-volumes", '', $stdout, $stderr); + $exit = Console::execute("${env} docker-compose -f {$path}/docker-compose.yml up -d --remove-orphans --renew-anon-volumes", '', $stdout, $stderr); if ($exit !== 0) { Console::error("Failed to install Appwrite dockers"); diff --git a/app/views/install/compose.phtml b/app/views/install/compose.phtml index 9a182cc62..9d5c3d084 100644 --- a/app/views/install/compose.phtml +++ b/app/views/install/compose.phtml @@ -266,10 +266,9 @@ services: - _APP_SMTP_PASSWORD appwrite-maintenance: + image: appwrite/appwrite: entrypoint: maintenance container_name: appwrite-maintenance - build: - context: . restart: unless-stopped networks: - appwrite @@ -307,8 +306,6 @@ services: - appwrite volumes: - appwrite-mariadb:/var/lib/mysql:rw - ports: - - "3306:3306" environment: - MYSQL_ROOT_PASSWORD=rootsecretpassword - MYSQL_DATABASE=${_APP_DB_SCHEMA} diff --git a/src/Appwrite/Specification/Format/OpenAPI3.php b/src/Appwrite/Specification/Format/OpenAPI3.php index 95ddf333f..836c9838d 100644 --- a/src/Appwrite/Specification/Format/OpenAPI3.php +++ b/src/Appwrite/Specification/Format/OpenAPI3.php @@ -118,6 +118,7 @@ class OpenAPI3 extends Format 'rate-key' => $route->getLabel('abuse-key', 'url:{url},ip:{ip}'), 'scope' => $route->getLabel('scope', ''), 'platforms' => $route->getLabel('sdk.platform', []), + 'packaging' => $route->getLabel('sdk.packaging', false), ], ]; diff --git a/src/Appwrite/Specification/Format/Swagger2.php b/src/Appwrite/Specification/Format/Swagger2.php index 7d4f5407f..7a033c504 100644 --- a/src/Appwrite/Specification/Format/Swagger2.php +++ b/src/Appwrite/Specification/Format/Swagger2.php @@ -116,6 +116,7 @@ class Swagger2 extends Format 'rate-key' => $route->getLabel('abuse-key', 'url:{url},ip:{ip}'), 'scope' => $route->getLabel('scope', ''), 'platforms' => $route->getLabel('sdk.platform', []), + 'packaging' => $route->getLabel('sdk.packaging', false), ], ]; diff --git a/tests/e2e/Services/Functions/FunctionsCustomClientTest.php b/tests/e2e/Services/Functions/FunctionsCustomClientTest.php index 25d3a8237..04d7a626f 100644 --- a/tests/e2e/Services/Functions/FunctionsCustomClientTest.php +++ b/tests/e2e/Services/Functions/FunctionsCustomClientTest.php @@ -76,7 +76,7 @@ class FunctionsCustomClientTest extends Scope 'x-appwrite-key' => $this->getProject()['apiKey'], ], [ 'command' => 'php function.php', - 'code' => new CURLFile(realpath(__DIR__ . '/../../../resources/functions/php.tar.gz'), 'application/x-gzip', 'php-fx.tar.gz'), + 'file' => new CURLFile(realpath(__DIR__ . '/../../../resources/functions/php.tar.gz'), 'application/x-gzip', 'php-fx.tar.gz'), ]); $tagId = $tag['body']['$id'] ?? ''; diff --git a/tests/e2e/Services/Functions/FunctionsCustomServerTest.php b/tests/e2e/Services/Functions/FunctionsCustomServerTest.php index 5b15b61ce..7cd5f80aa 100644 --- a/tests/e2e/Services/Functions/FunctionsCustomServerTest.php +++ b/tests/e2e/Services/Functions/FunctionsCustomServerTest.php @@ -184,7 +184,7 @@ class FunctionsCustomServerTest extends Scope 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ 'command' => 'php function.php', - 'code' => new CURLFile(realpath(__DIR__ . '/../../../resources/functions/php.tar.gz'), 'application/x-gzip', 'php-fx.tar.gz'), + 'file' => new CURLFile(realpath(__DIR__ . '/../../../resources/functions/php.tar.gz'), 'application/x-gzip', 'php-fx.tar.gz'), ]); $tagId = $tag['body']['$id'] ?? ''; @@ -467,7 +467,7 @@ class FunctionsCustomServerTest extends Scope 'language' => 'PHP', 'version' => '7.4', 'name' => 'php-7.4', - 'code' => $functions.'/php.tar.gz', + 'file' => $functions.'/php.tar.gz', 'command' => 'php index.php', 'timeout' => 15, ], @@ -475,7 +475,7 @@ class FunctionsCustomServerTest extends Scope 'language' => 'PHP', 'version' => '8.0', 'name' => 'php-8.0', - 'code' => $functions.'/php.tar.gz', + 'file' => $functions.'/php.tar.gz', 'command' => 'php index.php', 'timeout' => 15, ], @@ -483,7 +483,7 @@ class FunctionsCustomServerTest extends Scope 'language' => 'Python', 'version' => '3.8', 'name' => 'python-3.8', - 'code' => $functions.'/python.tar.gz', + 'file' => $functions.'/python.tar.gz', 'command' => 'python main.py', 'timeout' => 15, ], @@ -491,7 +491,7 @@ class FunctionsCustomServerTest extends Scope 'language' => 'Node.js', 'version' => '14.5', 'name' => 'node-14.5', - 'code' => $functions.'/node.tar.gz', + 'file' => $functions.'/node.tar.gz', 'command' => 'node index.js', 'timeout' => 15, ], @@ -499,7 +499,7 @@ class FunctionsCustomServerTest extends Scope 'language' => 'Node.js', 'version' => '15.5', 'name' => 'node-15.5', - 'code' => $functions.'/node.tar.gz', + 'file' => $functions.'/node.tar.gz', 'command' => 'node index.js', 'timeout' => 15, ], @@ -507,7 +507,7 @@ class FunctionsCustomServerTest extends Scope 'language' => 'Ruby', 'version' => '2.7', 'name' => 'ruby-2.7', - 'code' => $functions.'/ruby.tar.gz', + 'file' => $functions.'/ruby.tar.gz', 'command' => 'ruby app.rb', 'timeout' => 15, ], @@ -515,7 +515,7 @@ class FunctionsCustomServerTest extends Scope 'language' => 'Ruby', 'version' => '3.0', 'name' => 'ruby-3.0', - 'code' => $functions.'/ruby.tar.gz', + 'file' => $functions.'/ruby.tar.gz', 'command' => 'ruby app.rb', 'timeout' => 15, ], @@ -523,7 +523,7 @@ class FunctionsCustomServerTest extends Scope 'language' => 'Deno', 'version' => '1.5', 'name' => 'deno-1.5', - 'code' => $functions.'/deno.tar.gz', + 'file' => $functions.'/deno.tar.gz', 'command' => 'deno run --allow-env index.ts', 'timeout' => 15, ], @@ -531,7 +531,7 @@ class FunctionsCustomServerTest extends Scope 'language' => 'Deno', 'version' => '1.6', 'name' => 'deno-1.6', - 'code' => $functions.'/deno.tar.gz', + 'file' => $functions.'/deno.tar.gz', 'command' => 'deno run --allow-env index.ts', 'timeout' => 15, ], @@ -539,7 +539,7 @@ class FunctionsCustomServerTest extends Scope 'language' => 'Dart', 'version' => '2.10', 'name' => 'dart-2.10', - 'code' => $functions.'/dart.tar.gz', + 'file' => $functions.'/dart.tar.gz', 'command' => 'dart main.dart', 'timeout' => 15, ], @@ -547,7 +547,7 @@ class FunctionsCustomServerTest extends Scope 'language' => '.NET', 'version' => '3.1', 'name' => 'dotnet-3.1', - 'code' => $functions.'/dotnet-3.1.tar.gz', + 'file' => $functions.'/dotnet-3.1.tar.gz', 'command' => 'dotnet dotnet.dll', 'timeout' => 15, ], @@ -555,7 +555,7 @@ class FunctionsCustomServerTest extends Scope 'language' => '.NET', 'version' => '5.0', 'name' => 'dotnet-5.0', - 'code' => $functions.'/dotnet-5.0.tar.gz', + 'file' => $functions.'/dotnet-5.0.tar.gz', 'command' => 'dotnet dotnet.dll', 'timeout' => 15, ], @@ -586,7 +586,7 @@ class FunctionsCustomServerTest extends Scope $language = $env['language'] ?? ''; $version = $env['version'] ?? ''; $name = $env['name'] ?? ''; - $code = $env['code'] ?? ''; + $code = $env['file'] ?? ''; $command = $env['command'] ?? ''; $timeout = $env['timeout'] ?? 15; @@ -618,7 +618,7 @@ class FunctionsCustomServerTest extends Scope 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ 'command' => $command, - 'code' => new CURLFile($code, 'application/x-gzip', basename($code)), + 'file' => new CURLFile($code, 'application/x-gzip', basename($code)), ]); $tagId = $tag['body']['$id'] ?? ''; @@ -716,7 +716,7 @@ class FunctionsCustomServerTest extends Scope 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ 'command' => $command, - 'code' => new CURLFile($code, 'application/x-gzip', basename($code)), + 'file' => new CURLFile($code, 'application/x-gzip', basename($code)), ]); $tagId = $tag['body']['$id'] ?? '';