-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdockerfile
140 lines (123 loc) · 3.78 KB
/
dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
FROM ubuntu:bionic-20200311
ENV DEBIAN_FRONTEND=noninteractive
ENV SDK_VERSION=sdk-tools-linux-3859397 \
ANDROID_BUILD_TOOLS_VERSION=31.0.0 \
APPIUM_VERSION=1.22.3 \
ATD_VERSION=1.2
#=============
# Set WORKDIR
#=============
WORKDIR /root
#==================
# General Packages
#------------------
# openjdk-8-jdk
# Java
# ca-certificates
# SSL client
# tzdata
# Timezone
# zip
# Make a zip file
# unzip
# Unzip zip file
# curl
# Transfer data from or to a server
# wget
# Network downloader
# libqt5webkit5
# Web content engine (Fix issue in Android)
# libgconf-2-4
# Required package for chrome and chromedriver to run on Linux
# xvfb
# X virtual framebuffer
# gnupg
# Encryption software. It is needed for nodejs
# salt-minion
# Infrastructure management (client-side)
#==================
RUN apt-get -qqy update && \
apt-get -qqy --no-install-recommends install \
openjdk-8-jdk \
ca-certificates \
tzdata \
zip \
unzip \
curl \
wget \
libqt5webkit5 \
libgconf-2-4 \
xvfb \
gnupg \
salt-minion \
&& rm -rf /var/lib/apt/lists/*
#===============
# Set JAVA_HOME
#===============
ENV JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64/jre" \
PATH=$PATH:$JAVA_HOME/bin
#=====================
# Install Android SDK
#=====================
ARG ANDROID_PLATFORM_VERSION="android-31"
ENV ANDROID_HOME=/root
RUN wget -O tools.zip https://dl.google.com/android/repository/${SDK_VERSION}.zip && \
unzip tools.zip && rm tools.zip && \
chmod a+x -R $ANDROID_HOME && \
chown -R root:root $ANDROID_HOME
ENV PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin
# https://askubuntu.com/questions/885658/android-sdk-repositories-cfg-could-not-be-loaded
RUN mkdir -p ~/.android && \
touch ~/.android/repositories.cfg && \
echo y | sdkmanager "platform-tools" && \
echo y | sdkmanager "build-tools;$ANDROID_BUILD_TOOLS_VERSION" && \
echo y | sdkmanager "platforms;$ANDROID_PLATFORM_VERSION"
ENV PATH=$PATH:$ANDROID_HOME/platform-tools:$ANDROID_HOME/build-tools
#====================================
# Install latest nodejs, npm, appium
# Using this workaround to install Appium -> https://github.com/appium/appium/issues/10020 -> Please remove this workaround asap
#====================================
RUN curl -sL https://deb.nodesource.com/setup_12.x | bash && \
apt-get -qqy install nodejs && \
npm install -g appium@${APPIUM_VERSION} --unsafe-perm=true --allow-root && \
exit 0 && \
npm cache clean && \
apt-get remove --purge -y npm && \
apt-get autoremove --purge -y && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \
apt-get clean
#================================
# APPIUM Test Distribution (ATD)
#================================
RUN wget -nv -O RemoteAppiumManager.jar "https://github.com/AppiumTestDistribution/ATD-Remote/releases/download/${ATD_VERSION}/RemoteAppiumManager-${ATD_VERSION}.jar"
#==================================
# Fix Issue with timezone mismatch
#==================================
ENV TZ="US/Pacific"
RUN echo "${TZ}" > /etc/timezone
#===============
# Expose Ports
#---------------
# 4723
# Appium port
# 4567
# ATD port
#===============
EXPOSE 4723
EXPOSE 4567
#====================================================
# Scripts to run appium and connect to Selenium Grid
#====================================================
COPY entry_point.sh \
generate_config.sh \
wireless_connect.sh \
wireless_autoconnect.sh \
/root/
RUN chmod +x /root/entry_point.sh && \
chmod +x /root/generate_config.sh && \
chmod +x /root/wireless_connect.sh && \
chmod +x /root/wireless_autoconnect.sh
#========================================
# Run xvfb and appium server
#========================================
CMD /root/wireless_autoconnect.sh && /root/entry_point.sh