2016-07-27 55 views
0

我为Runner创建了自己的Dockerfile,它即将在Gitlab CI中作为Android项目运行者工作。问题是,我即将把物理设备连接到一台机器上,我即将部署该机器。由于通常使用Linux机器,我试图增加51 android.rules到/etc/dev/rules.d如本教程:Udev Setupdocker build .命令执行,我得到了错误:为Android创建Dockerfile GitLab CI

/bin/sh: 1: udevadm: not found 

我的问题是:

  1. 1)是否有可能,将物理Android设备连接到码头运行的操作系统?
  2. 2)如果1)是,我的错误在哪里?

有问题的部分dockerfile:

FROM ubuntu:latest 
#Ubuntu setup 
RUN apt-get update 
RUN apt-get install -y wget 

... 

#Setup Android Udev Rules 
RUN wget https://raw.githubusercontent.com/M0Rf30/android-udev-rules/master/51-android.rules 
RUN mv -y `pwd`/51-android.rules /etc/udev/rules.d 
RUN chmod a+r /etc/udev/rules.d/51-android.rules 
RUN udevadm control --reload-rules 
RUN service udev restart 
RUN usermod -a -G plugdev `whoami` 
RUN adb kill-server 
RUN adb devices 

#Cleaning 
RUN apt-get clean 
+0

这篇文章由Snapchat的Android开发人员编写,可能会帮助您:https://about.gitlab.com/2016/11/30/setting-up-gitlab-ci-for-android-projects/。他解释了如何使用GitLab CI构建和测试Android应用程序,为您提供.gitlab-ci.yml所需的代码并将其分解成若干部分,逐一解释 –

回答

0

泊坞的理念是具有每一个容器进程运行。通常没有Init系统,所以你不能像以前那样使用服务。

我不知道是否有可能达到你正在尝试做的,但我认为你要在主机上的udev规则,添加时要启动它的设备:https://docs.docker.com/engine/reference/commandline/run/#add-host-device-to-container-device

你也可能要读取https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/#/apt-get 每个RUN创建一个新层,只有信息添加到容器。

话虽如此,你可能希望有adb devices作为您的容器的ENTRYPOINTCMD

+0

感谢您的回答 - 这很棒,我制作了Android设备从Docker的内部可见。现在我面临另一个问题: 虽然Gitlab-CI启动我的亚军 - >它去泊坞窗,并从我的图像创建新的生成。不幸的是,每个新版本都需要在设备屏幕上确认ADB调试。有什么方法可以解决它吗? – Strykul