From 2ee2ea09a0fbbbf1276158e06f84710f450869ce Mon Sep 17 00:00:00 2001 From: Chirag Aggarwal Date: Sun, 12 Apr 2026 13:56:49 +0530 Subject: [PATCH 1/2] fix(installer): sync compose template executor image --- app/views/install/compose.phtml | 2 +- .../Modules/Installer/ComposeTemplateTest.php | 67 +++++++++++++++++++ 2 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 tests/unit/Platform/Modules/Installer/ComposeTemplateTest.php diff --git a/app/views/install/compose.phtml b/app/views/install/compose.phtml index 8d0ae55394..ef4d4a1fe4 100644 --- a/app/views/install/compose.phtml +++ b/app/views/install/compose.phtml @@ -993,7 +993,7 @@ $hostPath = rtrim($this->getParam('hostPath', ''), '/'); <<: *x-logging restart: unless-stopped stop_signal: SIGINT - image: openruntimes/executor:0.7.22 + image: openruntimes/executor:0.11.4 networks: - appwrite - runtimes diff --git a/tests/unit/Platform/Modules/Installer/ComposeTemplateTest.php b/tests/unit/Platform/Modules/Installer/ComposeTemplateTest.php new file mode 100644 index 0000000000..d2588835ff --- /dev/null +++ b/tests/unit/Platform/Modules/Installer/ComposeTemplateTest.php @@ -0,0 +1,67 @@ +readRepoFile('/docker-compose.yml'); + $renderedCompose = $this->renderInstallerCompose(); + + $this->assertStringContainsString("appwrite-worker-executions:\n", $canonicalCompose); + $this->assertStringContainsString("appwrite-worker-executions:\n", $renderedCompose); + $this->assertStringContainsString("entrypoint: worker-executions\n", $renderedCompose); + } + + public function testRenderedInstallerComposeUsesCanonicalExecutorImage(): void + { + $canonicalExecutorImage = $this->extractExecutorImage($this->readRepoFile('/docker-compose.yml')); + $renderedCompose = $this->renderInstallerCompose(); + + $this->assertStringContainsString("image: {$canonicalExecutorImage}\n", $renderedCompose); + } + + private function renderInstallerCompose(): string + { + $view = new View($this->repoPath('/app/views/install/compose.phtml')); + + $view + ->setParam('httpPort', '80') + ->setParam('httpsPort', '443') + ->setParam('version', '1.9.0') + ->setParam('organization', 'appwrite') + ->setParam('image', 'appwrite') + ->setParam('database', 'mariadb') + ->setParam('hostPath', '') + ->setParam('enableAssistant', false); + + return $view->render(false); + } + + private function extractExecutorImage(string $compose): string + { + $matched = preg_match('/^\s*image:\s*(openruntimes\/executor:[^\s]+)\s*$/m', $compose, $matches); + + $this->assertSame(1, $matched, 'Failed to find the canonical openruntimes executor image.'); + + return $matches[1]; + } + + private function readRepoFile(string $path): string + { + $contents = file_get_contents($this->repoPath($path)); + + $this->assertIsString($contents, "Failed to read {$path}."); + + return $contents; + } + + private function repoPath(string $path): string + { + return dirname(__DIR__, 5) . $path; + } +} From cb4c97f2eebeb76859379b3f262ccd1c6fae0404 Mon Sep 17 00:00:00 2001 From: Chirag Aggarwal Date: Sun, 12 Apr 2026 14:11:51 +0530 Subject: [PATCH 2/2] chore: remove installer compose regression test --- .../Modules/Installer/ComposeTemplateTest.php | 67 ------------------- 1 file changed, 67 deletions(-) delete mode 100644 tests/unit/Platform/Modules/Installer/ComposeTemplateTest.php diff --git a/tests/unit/Platform/Modules/Installer/ComposeTemplateTest.php b/tests/unit/Platform/Modules/Installer/ComposeTemplateTest.php deleted file mode 100644 index d2588835ff..0000000000 --- a/tests/unit/Platform/Modules/Installer/ComposeTemplateTest.php +++ /dev/null @@ -1,67 +0,0 @@ -readRepoFile('/docker-compose.yml'); - $renderedCompose = $this->renderInstallerCompose(); - - $this->assertStringContainsString("appwrite-worker-executions:\n", $canonicalCompose); - $this->assertStringContainsString("appwrite-worker-executions:\n", $renderedCompose); - $this->assertStringContainsString("entrypoint: worker-executions\n", $renderedCompose); - } - - public function testRenderedInstallerComposeUsesCanonicalExecutorImage(): void - { - $canonicalExecutorImage = $this->extractExecutorImage($this->readRepoFile('/docker-compose.yml')); - $renderedCompose = $this->renderInstallerCompose(); - - $this->assertStringContainsString("image: {$canonicalExecutorImage}\n", $renderedCompose); - } - - private function renderInstallerCompose(): string - { - $view = new View($this->repoPath('/app/views/install/compose.phtml')); - - $view - ->setParam('httpPort', '80') - ->setParam('httpsPort', '443') - ->setParam('version', '1.9.0') - ->setParam('organization', 'appwrite') - ->setParam('image', 'appwrite') - ->setParam('database', 'mariadb') - ->setParam('hostPath', '') - ->setParam('enableAssistant', false); - - return $view->render(false); - } - - private function extractExecutorImage(string $compose): string - { - $matched = preg_match('/^\s*image:\s*(openruntimes\/executor:[^\s]+)\s*$/m', $compose, $matches); - - $this->assertSame(1, $matched, 'Failed to find the canonical openruntimes executor image.'); - - return $matches[1]; - } - - private function readRepoFile(string $path): string - { - $contents = file_get_contents($this->repoPath($path)); - - $this->assertIsString($contents, "Failed to read {$path}."); - - return $contents; - } - - private function repoPath(string $path): string - { - return dirname(__DIR__, 5) . $path; - } -}