mirror of
https://github.com/appwrite/appwrite
synced 2026-05-23 08:58:35 +00:00
Merge pull request #726 from appwrite/feat-465-add-arm-support
Feat 465 add ARM support
This commit is contained in:
commit
c6af32fb57
9 changed files with 91 additions and 112 deletions
2
.env
2
.env
|
|
@ -25,7 +25,7 @@ _APP_INFLUXDB_PORT=8086
|
|||
_APP_STATSD_HOST=telegraf
|
||||
_APP_STATSD_PORT=8125
|
||||
_APP_SMTP_HOST=maildev
|
||||
_APP_SMTP_PORT=25
|
||||
_APP_SMTP_PORT=1025
|
||||
_APP_SMTP_SECURE=
|
||||
_APP_SMTP_USERNAME=
|
||||
_APP_SMTP_PASSWORD=
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ dist: xenial
|
|||
|
||||
arch:
|
||||
- amd64
|
||||
- arm64
|
||||
|
||||
os: linux
|
||||
|
||||
|
|
@ -10,9 +11,6 @@ language: shell
|
|||
notifications:
|
||||
email:
|
||||
- team@appwrite.io
|
||||
|
||||
services:
|
||||
- docker
|
||||
|
||||
before_install:
|
||||
- curl -fsSL https://get.docker.com | sh
|
||||
|
|
@ -27,6 +25,7 @@ before_install:
|
|||
- docker --version
|
||||
- docker buildx create --use
|
||||
- chmod -R u+x ./.travis-ci
|
||||
- export COMPOSE_INTERACTIVE_NO_CLI=1
|
||||
|
||||
install:
|
||||
- docker-compose up -d
|
||||
|
|
|
|||
|
|
@ -5,13 +5,14 @@
|
|||
- Added Anonymous Login ([RFC-010](https://github.com/appwrite/rfc/blob/main/010-anonymous-login.md), #914)
|
||||
- Added events for functions and executions (#971)
|
||||
- Added JWT support
|
||||
- Added ARM support
|
||||
- Splited token & session models to become 2 different internal entities (#922)
|
||||
- Added Dart 2.12 as a new Cloud Functions runtime (#989)
|
||||
- Added Python 3.9 as a new Cloud Functions runtime
|
||||
- Added Deno 1.8 as a new Cloud Functions runtime (#989)
|
||||
- ClamAV is now disabled by default to allow lower min requirments for Appwrite (#1064)
|
||||
- Added a new env var named `_APP_LOCALE` that allow to change the default `en` locale value (#1056)
|
||||
- Updated all the console bottom control to be consistent. Dropped the `+` icon (#1062)
|
||||
- Added runtime functions environment for Python 3.9
|
||||
- Added runtime functions environment for Deno 1.8
|
||||
|
||||
## Bugs
|
||||
|
||||
|
|
|
|||
|
|
@ -86,7 +86,7 @@ $environments = [
|
|||
'image' => 'appwrite/env-deno-1.2:1.0.0',
|
||||
'build' => '/usr/src/code/docker/environments/deno-1.2',
|
||||
'logo' => 'deno.png',
|
||||
'supports' => [System::X86, System::PPC, System::ARM],
|
||||
'supports' => [System::X86],
|
||||
],
|
||||
'deno-1.5' => [
|
||||
'name' => 'Deno',
|
||||
|
|
@ -95,7 +95,7 @@ $environments = [
|
|||
'image' => 'appwrite/env-deno-1.5:1.0.0',
|
||||
'build' => '/usr/src/code/docker/environments/deno-1.5',
|
||||
'logo' => 'deno.png',
|
||||
'supports' => [System::X86, System::PPC, System::ARM],
|
||||
'supports' => [System::X86],
|
||||
],
|
||||
'deno-1.6' => [
|
||||
'name' => 'Deno',
|
||||
|
|
@ -104,7 +104,7 @@ $environments = [
|
|||
'image' => 'appwrite/env-deno-1.6:1.0.0',
|
||||
'build' => '/usr/src/code/docker/environments/deno-1.6',
|
||||
'logo' => 'deno.png',
|
||||
'supports' => [System::X86, System::PPC, System::ARM],
|
||||
'supports' => [System::X86],
|
||||
],
|
||||
'deno-1.8' => [
|
||||
'name' => 'Deno',
|
||||
|
|
@ -113,7 +113,7 @@ $environments = [
|
|||
'image' => 'appwrite/env-deno-1.8:1.0.0',
|
||||
'build' => '/usr/src/code/docker/environments/deno-1.8',
|
||||
'logo' => 'deno.png',
|
||||
'supports' => [System::X86, System::PPC, System::ARM],
|
||||
'supports' => [System::X86],
|
||||
],
|
||||
'dart-2.10' => [
|
||||
'name' => 'Dart',
|
||||
|
|
@ -140,7 +140,7 @@ $environments = [
|
|||
'image' => 'appwrite/env-dotnet-3.1:1.0.0',
|
||||
'build' => '/usr/src/code/docker/environments/dotnet-3.1',
|
||||
'logo' => 'dotnet.png',
|
||||
'supports' => [System::X86, System::ARM],
|
||||
'supports' => [System::X86],
|
||||
],
|
||||
'dotnet-5.0' => [
|
||||
'name' => '.NET',
|
||||
|
|
|
|||
|
|
@ -423,7 +423,7 @@ services:
|
|||
# - appwrite-uploads:/storage/uploads
|
||||
|
||||
influxdb:
|
||||
image: influxdb:1.8-alpine
|
||||
image: appwrite/influxdb:1.0.0
|
||||
container_name: appwrite-influxdb
|
||||
networks:
|
||||
- appwrite
|
||||
|
|
@ -431,7 +431,7 @@ services:
|
|||
- appwrite-influxdb:/var/lib/influxdb:rw
|
||||
|
||||
telegraf:
|
||||
image: appwrite/telegraf:1.0.0
|
||||
image: appwrite/telegraf:1.1.0
|
||||
container_name: appwrite-telegraf
|
||||
networks:
|
||||
- appwrite
|
||||
|
|
@ -450,16 +450,16 @@ services:
|
|||
# Webgrind - A nice UI for exploring and debugging code-level stuff
|
||||
|
||||
maildev: # used mainly for dev tests
|
||||
image: djfarrelly/maildev
|
||||
container_name: appwrite-maildev
|
||||
image: appwrite/mailcatcher:1.0.0
|
||||
container_name: appwrite-mailcatcher
|
||||
ports:
|
||||
- '9503:80'
|
||||
- '9503:1080'
|
||||
networks:
|
||||
- appwrite
|
||||
|
||||
request-catcher: # used mainly for dev tests
|
||||
image: smarterdm/http-request-catcher
|
||||
container_name: appwrite-request-catcher
|
||||
image: appwrite/requestcatcher:1.0.0
|
||||
container_name: appwrite-requestcatcher
|
||||
ports:
|
||||
- '9504:5000'
|
||||
networks:
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ echo 'Dart 2.12...'
|
|||
docker buildx build --platform linux/amd64 -t appwrite/env-dart-2.12:1.0.0 ./docker/environments/dart-2.12/ --push
|
||||
|
||||
echo '.NET 3.1...'
|
||||
docker buildx build --platform linux/amd64,linux/arm64 -t appwrite/env-dotnet-3.1:1.0.0 ./docker/environments/dotnet-3.1/ --push
|
||||
docker buildx build --platform linux/amd64 -t appwrite/env-dotnet-3.1:1.0.0 ./docker/environments/dotnet-3.1/ --push
|
||||
|
||||
echo '.NET 5.0...'
|
||||
docker buildx build --platform linux/amd64,linux/arm64 -t appwrite/env-dotnet-5.0:1.0.0 ./docker/environments/dotnet-5.0/ --push
|
||||
|
|
|
|||
13
docs/tutorials/multi-architecture-support.md
Normal file
13
docs/tutorials/multi-architecture-support.md
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
# Multi Architecture Support
|
||||
|
||||
A list of Appwrite CPU architecture support status. We use this list to track the status of all Appwrite related Docker images and which architecture is supported by each image.
|
||||
|
||||
| | linux/amd64 | linux/arm64 | linux/arm/v6 | linux/arm/v7 | linux/arm64/v8 | linux/ppc64le | linux/s390x |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
| appwrite/appwrite | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 |
|
||||
| appwrite/mariadb | 🟢 | 🟢 | 🔴 | 🔴 | 🔴 | 🟢 | 🔴 |
|
||||
| appwrite/influxdb | 🟢 | 🟢 | 🟢 | 🟢 | 🔴 | 🔴 | 🔴 |
|
||||
| appwrite/telegraf | 🟢 | 🟢 | 🟢 | 🟢 | 🔴 | 🔴 | 🔴 |
|
||||
| appwrite/clamav | 🟢 | 🟢 | 🟢 | 🟢 | 🔴 | 🟢 | 🟢 |
|
||||
| traefik | 🟢 | 🔴 | 🟢 | 🔴 | 🟢 | 🔴 | 🔴 |
|
||||
| redis | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 |
|
||||
|
|
@ -35,7 +35,7 @@ abstract class Scope extends TestCase
|
|||
{
|
||||
sleep(10);
|
||||
|
||||
$emails = json_decode(file_get_contents('http://maildev/email'), true);
|
||||
$emails = json_decode(file_get_contents('http://maildev:1080/email'), true);
|
||||
|
||||
if ($emails && is_array($emails)) {
|
||||
return end($emails);
|
||||
|
|
|
|||
|
|
@ -454,135 +454,101 @@ class FunctionsCustomServerTest extends Scope
|
|||
public function testENVS():array
|
||||
{
|
||||
|
||||
$functions = realpath(__DIR__ . '/../../../resources/functions');
|
||||
$functionsDir = realpath(__DIR__ . '/../../../resources/functions');
|
||||
$envs = require('app/config/environments.php');
|
||||
|
||||
|
||||
/**
|
||||
* Command for rebuilding code packages:
|
||||
* bash tests/resources/functions/package-*.sh
|
||||
*/
|
||||
$envs = [
|
||||
[
|
||||
'language' => 'PHP',
|
||||
'version' => '7.4',
|
||||
'name' => 'php-7.4',
|
||||
'code' => $functions.'/php.tar.gz',
|
||||
'command' => 'php index.php',
|
||||
'timeout' => 15,
|
||||
],
|
||||
[
|
||||
'language' => 'PHP',
|
||||
'version' => '8.0',
|
||||
'name' => 'php-8.0',
|
||||
'code' => $functions.'/php.tar.gz',
|
||||
'command' => 'php index.php',
|
||||
'timeout' => 15,
|
||||
],
|
||||
[
|
||||
'language' => 'Python',
|
||||
'version' => '3.8',
|
||||
'name' => 'python-3.8',
|
||||
'code' => $functions.'/python.tar.gz',
|
||||
'command' => 'python main.py',
|
||||
'timeout' => 15,
|
||||
],
|
||||
[
|
||||
'language' => 'Python',
|
||||
'version' => '3.9',
|
||||
'name' => 'python-3.9',
|
||||
'code' => $functions.'/python.tar.gz',
|
||||
'command' => 'python main.py',
|
||||
'timeout' => 15,
|
||||
],
|
||||
[
|
||||
'language' => 'Node.js',
|
||||
'version' => '14.5',
|
||||
'name' => 'node-14.5',
|
||||
'code' => $functions.'/node.tar.gz',
|
||||
$functions = [
|
||||
'node-14.5' => [
|
||||
'code' => $functionsDir.'/node.tar.gz',
|
||||
'command' => 'node index.js',
|
||||
'timeout' => 15,
|
||||
],
|
||||
[
|
||||
'language' => 'Node.js',
|
||||
'version' => '15.5',
|
||||
'name' => 'node-15.5',
|
||||
'code' => $functions.'/node.tar.gz',
|
||||
'node-15.5' => [
|
||||
'code' => $functionsDir.'/node.tar.gz',
|
||||
'command' => 'node index.js',
|
||||
'timeout' => 15,
|
||||
],
|
||||
[
|
||||
'language' => 'Ruby',
|
||||
'version' => '2.7',
|
||||
'name' => 'ruby-2.7',
|
||||
'code' => $functions.'/ruby.tar.gz',
|
||||
'php-7.4' => [
|
||||
'code' => $functionsDir.'/php.tar.gz',
|
||||
'command' => 'php index.php',
|
||||
'timeout' => 15,
|
||||
],
|
||||
'php-8.0' => [
|
||||
'code' => $functionsDir.'/php.tar.gz',
|
||||
'command' => 'php index.php',
|
||||
'timeout' => 15,
|
||||
],
|
||||
'ruby-2.7' => [
|
||||
'code' => $functionsDir.'/ruby.tar.gz',
|
||||
'command' => 'ruby app.rb',
|
||||
'timeout' => 15,
|
||||
],
|
||||
[
|
||||
'language' => 'Ruby',
|
||||
'version' => '3.0',
|
||||
'name' => 'ruby-3.0',
|
||||
'code' => $functions.'/ruby.tar.gz',
|
||||
'ruby-3.0' => [
|
||||
'code' => $functionsDir.'/ruby.tar.gz',
|
||||
'command' => 'ruby app.rb',
|
||||
'timeout' => 15,
|
||||
],
|
||||
[
|
||||
'language' => 'Deno',
|
||||
'version' => '1.5',
|
||||
'name' => 'deno-1.5',
|
||||
'code' => $functions.'/deno.tar.gz',
|
||||
'python-3.8' => [
|
||||
'code' => $functionsDir.'/python.tar.gz',
|
||||
'command' => 'python main.py',
|
||||
'timeout' => 15,
|
||||
],
|
||||
'python-3.9' => [
|
||||
'code' => $functionsDir.'/python.tar.gz',
|
||||
'command' => 'python main.py',
|
||||
'timeout' => 15,
|
||||
],
|
||||
'deno-1.2' => [
|
||||
'code' => $functionsDir.'/deno.tar.gz',
|
||||
'command' => 'deno run --allow-env index.ts',
|
||||
'timeout' => 15,
|
||||
],
|
||||
[
|
||||
'language' => 'Deno',
|
||||
'version' => '1.6',
|
||||
'name' => 'deno-1.6',
|
||||
'code' => $functions.'/deno.tar.gz',
|
||||
'deno-1.5' => [
|
||||
'code' => $functionsDir.'/deno.tar.gz',
|
||||
'command' => 'deno run --allow-env index.ts',
|
||||
'timeout' => 15,
|
||||
],
|
||||
[
|
||||
'language' => 'Deno',
|
||||
'version' => '1.8',
|
||||
'name' => 'deno-1.8',
|
||||
'code' => $functions.'/deno.tar.gz',
|
||||
'deno-1.6' => [
|
||||
'code' => $functionsDir.'/deno.tar.gz',
|
||||
'command' => 'deno run --allow-env index.ts',
|
||||
'timeout' => 15,
|
||||
],
|
||||
[
|
||||
'language' => 'Dart',
|
||||
'version' => '2.10',
|
||||
'name' => 'dart-2.10',
|
||||
'code' => $functions.'/dart.tar.gz',
|
||||
'deno-1.8' => [
|
||||
'code' => $functionsDir.'/deno.tar.gz',
|
||||
'command' => 'deno run --allow-env index.ts',
|
||||
'timeout' => 15,
|
||||
],
|
||||
'dart-2.10' => [
|
||||
'code' => $functionsDir.'/dart.tar.gz',
|
||||
'command' => 'dart main.dart',
|
||||
'timeout' => 15,
|
||||
],
|
||||
[
|
||||
'language' => 'Dart',
|
||||
'version' => '2.12',
|
||||
'name' => 'dart-2.12',
|
||||
'code' => $functions.'/dart.tar.gz',
|
||||
'dart-2.12' => [
|
||||
'code' => $functionsDir.'/dart.tar.gz',
|
||||
'command' => 'dart main.dart',
|
||||
'timeout' => 15,
|
||||
],
|
||||
[
|
||||
'language' => '.NET',
|
||||
'version' => '3.1',
|
||||
'name' => 'dotnet-3.1',
|
||||
'code' => $functions.'/dotnet-3.1.tar.gz',
|
||||
'dotnet-3.1' => [
|
||||
'code' => $functionsDir.'/dotnet-3.1.tar.gz',
|
||||
'command' => 'dotnet dotnet.dll',
|
||||
'timeout' => 15,
|
||||
],
|
||||
[
|
||||
'language' => '.NET',
|
||||
'version' => '5.0',
|
||||
'name' => 'dotnet-5.0',
|
||||
'code' => $functions.'/dotnet-5.0.tar.gz',
|
||||
'dotnet-5.0' => [
|
||||
'code' => $functionsDir.'/dotnet-5.0.tar.gz',
|
||||
'command' => 'dotnet dotnet.dll',
|
||||
'timeout' => 15,
|
||||
],
|
||||
]
|
||||
];
|
||||
|
||||
foreach ($envs as $key => $env) {
|
||||
$envs[$key] = array_merge($env, $functions[$key]);
|
||||
}
|
||||
|
||||
sleep(count($envs) * 20);
|
||||
fwrite(STDERR, ".");
|
||||
|
||||
|
|
@ -605,9 +571,9 @@ class FunctionsCustomServerTest extends Scope
|
|||
$fileId = $file['body']['$id'] ?? '';
|
||||
|
||||
foreach ($envs as $key => $env) {
|
||||
$language = $env['language'] ?? '';
|
||||
$name = $key ?? '';
|
||||
$language = $env['name'] ?? '';
|
||||
$version = $env['version'] ?? '';
|
||||
$name = $env['name'] ?? '';
|
||||
$code = $env['code'] ?? '';
|
||||
$command = $env['command'] ?? '';
|
||||
$timeout = $env['timeout'] ?? 15;
|
||||
|
|
|
|||
Loading…
Reference in a new issue