diff --git a/app/controllers/api/functions.php b/app/controllers/api/functions.php index d3a26b414e..f276cd2353 100644 --- a/app/controllers/api/functions.php +++ b/app/controllers/api/functions.php @@ -832,6 +832,7 @@ App::get('/v1/functions/:functionId/deployments') $result->setAttribute('status', $build->getAttribute('status', 'processing')); $result->setAttribute('buildStderr', $build->getAttribute('stderr', '')); $result->setAttribute('buildStdout', $build->getAttribute('stdout', '')); + $result->setAttribute('buildTime', $build->getAttribute('duration', 0)); } $response->dynamic(new Document([ diff --git a/app/workers/builds.php b/app/workers/builds.php index bf780c6464..f31db88ab3 100644 --- a/app/workers/builds.php +++ b/app/workers/builds.php @@ -181,6 +181,10 @@ class BuildsV1 extends Worker $build->setAttribute('stderr', $response['stderr']); $build->setAttribute('stdout', $response['response']); + /* Also update the deployment buildTime */ + $deployment->setAttribute('buildTime', $response['duration']); + $deployment = $dbForProject->updateDocument('deployments', $deployment->getId(), $deployment); + Console::success("Build id: $buildId created"); /** Set auto deploy */ diff --git a/src/Appwrite/Utopia/Response/Model/Deployment.php b/src/Appwrite/Utopia/Response/Model/Deployment.php index 7c93f566b4..8862d6a14e 100644 --- a/src/Appwrite/Utopia/Response/Model/Deployment.php +++ b/src/Appwrite/Utopia/Response/Model/Deployment.php @@ -82,6 +82,12 @@ class Deployment extends Model 'default' => '', 'example' => 'enabled', ]) + ->addRule('buildTime', [ + 'type' => self::TYPE_INTEGER, + 'description' => 'The current build time in seconds.', + 'default' => 0, + 'example' => 128, + ]) ; } diff --git a/tests/e2e/Services/Functions/FunctionsCustomServerTest.php b/tests/e2e/Services/Functions/FunctionsCustomServerTest.php index 5e498368ea..7694bf8ac2 100644 --- a/tests/e2e/Services/Functions/FunctionsCustomServerTest.php +++ b/tests/e2e/Services/Functions/FunctionsCustomServerTest.php @@ -550,6 +550,7 @@ class FunctionsCustomServerTest extends Scope $this->assertIsArray($function['body']['deployments']); $this->assertCount(2, $function['body']['deployments']); $this->assertEquals($function['body']['deployments'][0]['$id'], $data['deploymentId']); + $this->assertGreaterThanOrEqual(2, $function['body']['deployments'][0]['buildTime']); return $data; } @@ -568,6 +569,7 @@ class FunctionsCustomServerTest extends Scope ], $this->getHeaders())); $this->assertEquals(200, $function['headers']['status-code']); + $this->assertEquals(0, $function['body']['buildTime']); /** * Test for FAILURE