1

我是Docker中的新成員,我需要儀器測試方面的幫助。我創建了一個Dockerfile(從here得到它,讓小修飾符)使用Bitbucket pipelane和Docker的Android儀器測試

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 

當我構建它,它的工作原理,以及模擬器運行。 我的到位桶管道

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

但是,錯誤提交的所有管線我:

com.android.builder.testing.api.DeviceException: No connected devices!

是否可以自動運行的儀器測試?可能是我必須使用不是Docker,但是別的嗎?

+0

我不敢相信,沒有人知道它... – Hagakurje

回答

0

運行命令在構建容器時運行,您可以將其視爲運行模擬器並關閉計算機。當你重啓容器時,它不再運行。您需要一個'CMD'作爲最後一行,它在容器啓動時運行。 See this link for more info

要在docker上運行GUI應用並不容易,祝你好運,如果你能得到它,請回復!