diff --git a/app/controllers/api/functions.php b/app/controllers/api/functions.php index 1f0121cab1..6376b40bf6 100644 --- a/app/controllers/api/functions.php +++ b/app/controllers/api/functions.php @@ -1462,7 +1462,8 @@ App::post('/v1/functions/:functionId/deployments/:deploymentId/build') ->inject('project') ->inject('queueForEvents') ->inject('queueForBuilds') - ->action(function (string $functionId, string $deploymentId, string $buildId, Request $request, Response $response, Database $dbForProject, Document $project, Event $queueForEvents, Build $queueForBuilds) { + ->inject('deviceForFunctions') + ->action(function (string $functionId, string $deploymentId, string $buildId, Request $request, Response $response, Database $dbForProject, Document $project, Event $queueForEvents, Build $queueForBuilds, Device $deviceForFunctions) { $function = $dbForProject->getDocument('functions', $functionId); if ($function->isEmpty()) { @@ -1474,13 +1475,23 @@ App::post('/v1/functions/:functionId/deployments/:deploymentId/build') throw new Exception(Exception::DEPLOYMENT_NOT_FOUND); } + $path = $deployment->getAttribute('path'); + if(empty($path) || !$deviceForFunctions->exists($path)) { + throw new Exception(Exception::DEPLOYMENT_NOT_FOUND); + } + $deploymentId = ID::unique(); + $destination = $deviceForFunctions->getPath($deploymentId . '.' . \pathinfo('code.tar.gz', PATHINFO_EXTENSION)); + $deviceForFunctions->transfer($path, $destination, $deviceForFunctions); + $deployment->removeAttribute('$internalId'); $deployment = $dbForProject->createDocument('deployments', $deployment->setAttributes([ + '$internalId' => '', '$id' => $deploymentId, 'buildId' => '', 'buildInternalId' => '', + 'path' => $destination, 'entrypoint' => $function->getAttribute('entrypoint'), 'commands' => $function->getAttribute('commands', ''), 'search' => implode(' ', [$deploymentId, $function->getAttribute('entrypoint')]), diff --git a/app/views/install/compose.phtml b/app/views/install/compose.phtml index 16aedb47fd..c266a76f53 100644 --- a/app/views/install/compose.phtml +++ b/app/views/install/compose.phtml @@ -787,7 +787,7 @@ $image = $this->getParam('image', ''); <<: *x-logging restart: unless-stopped stop_signal: SIGINT - image: openruntimes/executor:0.6.2 + image: openruntimes/executor:0.6.5 networks: - appwrite - runtimes diff --git a/docker-compose.yml b/docker-compose.yml index 2a8bc45b72..8fbad2f652 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -873,7 +873,7 @@ services: hostname: exc1 <<: *x-logging stop_signal: SIGINT - image: openruntimes/executor:0.6.4 + image: openruntimes/executor:0.6.5 restart: unless-stopped networks: - appwrite diff --git a/src/Appwrite/Platform/Workers/Builds.php b/src/Appwrite/Platform/Workers/Builds.php index b712edd402..d026a9e54b 100644 --- a/src/Appwrite/Platform/Workers/Builds.php +++ b/src/Appwrite/Platform/Workers/Builds.php @@ -333,6 +333,7 @@ class Builds extends Action $source = $path; $build = $dbForProject->updateDocument('builds', $build->getId(), $build->setAttribute('source', $source)); + $deployment = $dbForProject->updateDocument('deployments', $deployment->getId(), $deployment->setAttribute('path', $source)); $this->runGitAction('processing', $github, $providerCommitHash, $owner, $repositoryName, $project, $function, $deployment->getId(), $dbForProject, $dbForConsole); } diff --git a/src/Executor/Executor.php b/src/Executor/Executor.php index d6459a5ba7..bc94353fee 100644 --- a/src/Executor/Executor.php +++ b/src/Executor/Executor.php @@ -194,8 +194,7 @@ class Executor } $runtimeId = "$projectId-$deploymentId"; - $route = '/runtimes/' . $runtimeId . '/execution'; - + $route = '/runtimes/' . $runtimeId . '/executions'; // Remove after migration if ($version == 'v3') { @@ -217,6 +216,7 @@ class Executor 'version' => $version, 'runtimeEntrypoint' => $runtimeEntrypoint, 'logging' => $logging, + 'restartPolicy' => 'always' // Once utopia/orchestration has it, use DockerAPI::ALWAYS (0.13+) ]; if(!empty($body)) {