使用Bitbucket pipelane和Docker进行Android仪器testing

我是Docker中的新成员,在仪器testing中需要帮助。 我创build一个Dockerfile(从这里得到它,并做一些修饰符)

FROM ubuntu:14.04 # Install java7 RUN apt-get update && \ apt-get install -y software-properties-common && \ add-apt-repository -y ppa:webupd8team/java && \ (echo oracle-java7-installer shared/accepted-oracle-license-v1-1 select true | /usr/bin/debconf-set-selections) && \ apt-get update && \ apt-get install -y oracle-java7-installer && \ apt-get clean && \ rm -fr /var/lib/apt/lists/* /tmp/* /var/tmp/* ENV JAVA7_HOME /usr/lib/jvm/java-8-oracle # Install java8 RUN apt-get update && \ apt-get install -y software-properties-common && \ add-apt-repository -y ppa:webupd8team/java && \ (echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | /usr/bin/debconf-set-selections) && \ apt-get update && \ apt-get install -y oracle-java8-installer && \ apt-get clean && \ rm -fr /var/lib/apt/lists/* /tmp/* /var/tmp/* ENV JAVA8_HOME /usr/lib/jvm/java-8-oracle # Install Deps RUN dpkg --add-architecture i386 && apt-get update && apt-get install -y -- force-yes expect git wget libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5 lib32z1 libpulse0 python curl libqt5widgets5 && apt-get clean && rm -fr /var/lib/apt/lists/* /tmp/* /var/tmp/* # Copy install tools COPY tools /opt/tools RUN chmod +x /opt/tools/android-accept-licenses.sh RUN chmod +x /opt/tools/android-wait-for-emulator.sh ENV PATH ${PATH}:/opt/tools # Install Android SDK RUN cd /opt && wget --output-document=android-sdk.tgz --quiet https://dl.google.com/android/android-sdk_r24.4.1-linux.tgz && \ tar xzf android-sdk.tgz && \ rm -f android-sdk.tgz && \ chown -R root.root android-sdk-linux && \ /opt/tools/android-accept-licenses.sh "android-sdk-linux/tools/android update sdk --all --no-ui --filter platform-tools,tools" && \ /opt/tools/android-accept-licenses.sh "android-sdk-linux/tools/android update sdk --all --no-ui --filter platform-tools,tools,build-tools-25.0.2,android-14,android-23,android-25,extra-android-support,extra-android-m2repository,extra- google-m2repository,extra-google-google_play_services,sys-img-armeabi-v7a- google_apis-23" # Setup environment ENV ANDROID_HOME /opt/android-sdk-linux ENV PATH ${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools RUN which adb RUN which android # Create emulator RUN echo "no" | android create avd \ --force \ --device "Nexus 5" \ --name nexus5_23 \ --target android-23 \ --abi google_apis/armeabi-v7a \ --sdcard 512M # Cleaning RUN apt-get clean # Start up the emulator RUN ["/bin/bash", "-c", "SHELL=/bin/bash emulator -avd nexus5_23 -no-window & /opt/tools/android-wait-for-emulator.sh"] # GO to workspace RUN mkdir -p /opt/workspace WORKDIR /opt/workspace 

当我build立它,它的工作,和模拟器运行。 我的bitbucketpipe道是

 image: xxx/android-23:latest pipelines: default: - step: script: - bash ./gradlew cAT 

但是,我所有的pipe道提交错误:

com.android.builder.testing.api.DeviceException:没有连接的设备!

是否有可能自动运行仪器testing? 可能是我必须使用不是docker工人,而是别的吗?

运行命令在构build容器时运行,您可以将其视为运行模拟器并closures计算机。 当您重新启动容器时,它不再运行。 你需要一个'CMD'作为最后一行,在容器启动时运行。 请参阅此链接了解更多信息

在Docker中使用GUI应用程序并不容易,祝你好运,如果你能得到它,请回复。