在Jenkins构建期间运行Android模拟器

15

我已经安装了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

运行 kvm-ok 命令并查看输出。输出可能为:INFO: /dev/kvm 存在,可以使用 KVM 加速 或者 INFO: 您的 CPU 不支持 KVM 扩展,无法使用 KVM 加速如果是后者,您需要进入 BIOS 设置并启用虚拟化技术。 - Stan E
正如您所展示的那样,只有“root”用户有访问“/dev/kvm”的权限,而“jenkins”用户不在“root”用户组中。 - Christopher Orr
2个回答

32

我已经成功解决了这个问题。

  1. 安装 Qemu-KVM 和 cpu-checker:
    sudo apt install qemu-kvm cpu-checker
  2. 检查 KVM 是否可用(作为 jenkins 用户):
    $ kvm-ok
    INFO: /dev/kvm 存在
    KVM 可以使用加速
  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. 重新启动

请参见http://stackoverflow.com/a/43731342/2482947。在Ubuntu中,您还应将“jenkins”用户添加到“libvirt”组中。 - hadilq

0

在我的CI(GitLab)上,在Ubuntu上缺少了这个

usermod -a -G kvm gitlab-runner

或者使用Jenkins

usermod -a -G kvm jenkins

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接