Запуск эмулятора Android во время сборки jenkins

Я установил Jenkins и настроил задание сборки с запуском эмулятора во время сборки. Но когда я выполняю задание, я получаю сообщение об ошибке, что у пользователя jenkins нет разрешения на запуск kvm. Как я могу это исправить.

$ android list target
[android] Using Android SDK: /opt/android/sdk
$ adb start-server
* daemon not running. starting it now on port 5973 *
* daemon started successfully *
$ adb start-server
[android] Starting Android emulator
[android] Erasing existing emulator data...
$ emulator -ports 5971,5972 -prop persist.sys.language=en -prop persist.sys.country=US -avd hudson_en-US_160_1024x768_android-15_x86 -no-snapshot-load -no-snapshot-save -wipe-data
emulator: ERROR: x86 emulation currently requires hardware acceleration!
Please ensure KVM is properly installed and usable.
CPU acceleration status: This user doesn't have permissions to use KVM (/dev/kvm).
[android] Emulator did not appear to start; giving up
$ adb disconnect localhost:5972
[android] Stopping Android emulator
$ adb kill-server

Разрешения

$ ls -l /dev/kvm
crw-rw----+ 1 root root 10, 232 May  6 13:46 /dev/kvm

$ groups jenkins
jenkins : jenkins

person Viktor K    schedule 06.05.2015    source источник
comment
Запустите kvm-ok и посмотрите результат. Это INFO: /dev/kvm exists KVM acceleration can be used или INFO: Your CPU does not support KVM extensions KVM acceleration can NOT be used? Также может быть, что Enter your BIOS setup and enable Virtualization Technology, так что вы должны сделать, как сказано :)   -  person Stan E    schedule 06.05.2015
comment
Как вы сами показали, только root имеет разрешение на доступ к /dev/kvm, а jenkins не входит в группу root.   -  person Christopher Orr    schedule 06.05.2015


Ответы (2)


Мне удалось решить проблему.

  1. Установите Qemu-KVM и cpu-checker:
    sudo apt install qemu-kvm cpu-checker
  2. Проверьте, доступен ли KVM (как пользователь jenkins):
    $ kvm-ok
    INFO: /dev/kvm exists
    KVM acceleration can be used
  3. Создайте группу kvm и добавьте jenkins в эту группу:
    addgroup kvm
    usermod -a -G kvm jenkins
  4. Изменить владельца группы для /dev/kvm:
    chgrp kvm /dev/kvm
  5. Создайте правило udev:
    $ sudo nano /etc/udev/rules.d/60-qemu-kvm.rules
    KERNEL=="kvm", GROUP="kvm", MODE="0660"
  6. Перезагрузить
person Viktor K    schedule 07.05.2015
comment
См. stackoverflow.com/a/43731342/2482947. В Ubuntu вы также должны добавить пользователя jenkins в группу libvirt. - person hadilq; 02.05.2017

В моем CI (gitlab) этого не было в Ubuntu

usermod -a -G kvm gitlab-runner

или с Дженкинсом

usermod -a -G kvm jenkins
person hannes ach    schedule 09.12.2018