Запустите эмулятор Android x86 или Arm64 в конвейере gitlab с помощью образа докера Reactnativecommunity/react-native-anAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Запустите эмулятор Android x86 или Arm64 в конвейере gitlab с помощью образа докера Reactnativecommunity/react-native-an

Сообщение Anonymous »

Я хочу запустить тесты e2e Detox в конвейере Gitlab с помощью эмулятора Android (используя двоичные файлы x86 или Arm64). Конвейер выходит из строя в обоих случаях либо потому, что исполнитель Gitlab не поддерживает аппаратную виртуализацию (x86), либо потому, что исполнитель Gitlab, использующий среду ARM, плохо работает с образом докера responsenativecommunity/react-native-android в этом работа.
Мой вывод таков: есть два варианта, ни один из которых не является простым. Варианты, которые, по моему мнению, доступны, описаны ниже. Есть ли более простое решение?
-- Сценарий с двоичным эмулятором x86 ---
Если я хочу использовать двоичный файл x86, конвейер необходима поддержка аппаратной виртуализации (согласно журналам ошибок).

Код: Выделить всё

ERROR   | x86 emulation currently requires hardware acceleration!
CPU acceleration status: KVM requires a CPU that supports vmx or svm
Я проверил, могу ли я установить аппаратную виртуализацию через KVM, но KVM не поддерживается в этом задании. Я запустил приведенный ниже скрипт, чтобы проверить, и он вернулся как 0 (не поддерживается).

Код: Выделить всё

$ echo "Verify KVM support"
Verify KVM support
$ egrep -c '(vmx|svm)' /proc/cpuinfo
0
Эта ошибка сохраняется даже после отключения аппаратной виртуализации (-accel off, Swiftshader_indirect).

Код: Выделить всё

 $ANDROID_HOME/emulator/emulator -avd Pixel_5_API_30_x86
-no-boot-anim -no-snapshot -gpu -accel off swiftshader_indirect -memory 2048 -no-audio -no-window &
В этой ситуации, кажется, у меня есть два варианта.
Первый вариант — использовать сторонний экземпляр с поддержкой KVM внутри Gitlab. трубопровод. Это потребует использования экземпляра AWS, поддерживающего вложенную виртуализацию (например, типы экземпляров m5d, c5d или metal), а затем установку и настройку KVM на нем. пример. Я бы предпочел избегать этого маршрута, поскольку он потенциально кажется сложным, и я не совсем уверен, будет ли он по-прежнему работать с образом докера responsenativecommunity/react-native-android.
Второй вариант — использовать двоичный файл ARM, поскольку он не требует аппаратной виртуализации.
-- Сценарий с двоичным эмулятором ARM ---
Проблема с использованием двоичного файла ARM заключается в том, что мне нужен исполнитель Gitlab, который также поддерживает ARM, но он не работает с образом докера Reactnativecommunity/react-native-android в этом задании.
Это часть задания в файле .gitlab-ci.yml:

Код: Выделить всё

android-test:
stage: android-test
image: reactnativecommunity/react-native-android:latest
tags:
- saas-linux-medium-arm64
Задание не выполнено:

Код: Выделить всё

ERROR: Job failed: failed to pull image "reactnativecommunity/react-native-android:latest" with specified policies [always]: no matching manifest for linux/arm64/v8 in the manifest list entries (manager.go:251:1s)
Я изучил, что именно предоставляет образ докера responsenativecommunity/react-native-android, и он включает в себя очень удобную настройку сценариев установки, в том числе: Android SDK, Node JS, JDK, Gradle и React Native CLI.
Мне кажется, что решением в этом случае будет удаление образа докера responsenativecommunity/react-native-android и вместо этого вручную установите все необходимые компоненты (например, Android SDK, Node JS, JDK, Gradle и React Native CLI). Однако это звучит довольно трудоемко.
--- Мой вопрос:
Есть ли более простой и легкий способ запустить эмулятор Android с использованием двоичных файлов x86 или Arm64? Я искал в Интернете ответы, но не нашел многого, что соответствовало бы моей проблеме. Это потому, что большинство людей не используют Gitlab, а вместо этого используют Bitrise? Или люди просто стиснут зубы и используют одно из двух решений, описанных выше?

Подробнее здесь: https://stackoverflow.com/questions/790 ... ommunity-r
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»