Skip to content

Commit 297b387

Browse files
authored
Enabling a Dynamic Grid (#1125) [deploy][prerelease]
* Using new prerelease jar * Adding Standalone Docker files * Adding Node Docker files * Building Node Docker through Makefile * Adding docs, how to use a dynamic Grid * Adding tag and push commands to Makefile
1 parent 6cc426f commit 297b387

15 files changed

+327
-14
lines changed

Base/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ COPY supervisord.conf /etc
7171
RUN mkdir -p /opt/selenium /var/run/supervisor /var/log/supervisor \
7272
&& touch /opt/selenium/config.json \
7373
&& chmod -R 777 /opt/selenium /var/run/supervisor /var/log/supervisor /etc/passwd \
74-
&& wget --no-verbose https://github.com/SeleniumHQ/docker-selenium/raw/alpha-jars/selenium-server-4.0.0-alpha-7-117b9d61c9.jar \
74+
&& wget --no-verbose https://github.com/SeleniumHQ/docker-selenium/raw/alpha-jars/selenium-server-4.0.0-alpha-7-bd15e4e88a.jar \
7575
-O /opt/selenium/selenium-server.jar \
7676
# && wget --no-verbose https://selenium-release.storage.googleapis.com/4.0-alpha-6/selenium-server-4.0.0-alpha-6.jar \
7777
# -O /opt/selenium/selenium-server.jar \

Makefile

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,11 @@ all: hub \
2020
chrome \
2121
firefox \
2222
opera \
23+
docker \
2324
standalone_chrome \
2425
standalone_firefox \
2526
standalone_opera \
27+
standalone_docker \
2628
video
2729

2830
generate_all: \
@@ -35,9 +37,11 @@ generate_all: \
3537
generate_chrome \
3638
generate_firefox \
3739
generate_opera \
40+
generate_docker \
3841
generate_standalone_firefox \
3942
generate_standalone_chrome \
40-
generate_standalone_opera
43+
generate_standalone_opera \
44+
generate_standalone_docker
4145

4246
build: all
4347

@@ -100,6 +104,18 @@ generate_opera:
100104
opera: node_base generate_opera
101105
cd ./NodeOpera && docker build $(BUILD_ARGS) -t $(NAME)/node-opera:$(TAG_VERSION) .
102106

107+
generate_docker:
108+
cd ./NodeDocker && ./generate.sh $(TAG_VERSION) $(NAMESPACE) $(AUTHORS)
109+
110+
docker: base generate_docker
111+
cd ./NodeDocker && docker build $(BUILD_ARGS) -t $(NAME)/node-docker:$(TAG_VERSION) .
112+
113+
generate_standalone_docker:
114+
cd ./StandaloneDocker && ./generate.sh $(TAG_VERSION) $(NAMESPACE) $(AUTHORS)
115+
116+
standalone_docker: base generate_standalone_docker
117+
cd ./StandaloneDocker && docker build $(BUILD_ARGS) -t $(NAME)/standalone-docker:$(TAG_VERSION) .
118+
103119
generate_standalone_firefox:
104120
cd ./Standalone && ./generate.sh StandaloneFirefox node-firefox $(TAG_VERSION) $(NAMESPACE) $(AUTHORS)
105121

@@ -146,9 +162,11 @@ tag_latest:
146162
docker tag $(NAME)/node-chrome:$(TAG_VERSION) $(NAME)/node-chrome:latest
147163
docker tag $(NAME)/node-firefox:$(TAG_VERSION) $(NAME)/node-firefox:latest
148164
docker tag $(NAME)/node-opera:$(TAG_VERSION) $(NAME)/node-opera:latest
165+
docker tag $(NAME)/node-docker:$(TAG_VERSION) $(NAME)/node-docker:latest
149166
docker tag $(NAME)/standalone-chrome:$(TAG_VERSION) $(NAME)/standalone-chrome:latest
150167
docker tag $(NAME)/standalone-firefox:$(TAG_VERSION) $(NAME)/standalone-firefox:latest
151168
docker tag $(NAME)/standalone-opera:$(TAG_VERSION) $(NAME)/standalone-opera:latest
169+
docker tag $(NAME)/standalone-docker:$(TAG_VERSION) $(NAME)/standalone-docker:latest
152170

153171
release_latest:
154172
docker push $(NAME)/base:latest
@@ -161,9 +179,11 @@ release_latest:
161179
docker push $(NAME)/node-chrome:latest
162180
docker push $(NAME)/node-firefox:latest
163181
docker push $(NAME)/node-opera:latest
182+
docker push $(NAME)/node-docker:latest
164183
docker push $(NAME)/standalone-chrome:latest
165184
docker push $(NAME)/standalone-firefox:latest
166185
docker push $(NAME)/standalone-opera:latest
186+
docker push $(NAME)/standalone-docker:latest
167187

168188
tag_major_minor:
169189
docker tag $(NAME)/base:$(TAG_VERSION) $(NAME)/base:$(MAJOR)
@@ -176,9 +196,11 @@ tag_major_minor:
176196
docker tag $(NAME)/node-chrome:$(TAG_VERSION) $(NAME)/node-chrome:$(MAJOR)
177197
docker tag $(NAME)/node-firefox:$(TAG_VERSION) $(NAME)/node-firefox:$(MAJOR)
178198
docker tag $(NAME)/node-opera:$(TAG_VERSION) $(NAME)/node-opera:$(MAJOR)
199+
docker tag $(NAME)/node-docker:$(TAG_VERSION) $(NAME)/node-docker:$(MAJOR)
179200
docker tag $(NAME)/standalone-chrome:$(TAG_VERSION) $(NAME)/standalone-chrome:$(MAJOR)
180201
docker tag $(NAME)/standalone-firefox:$(TAG_VERSION) $(NAME)/standalone-firefox:$(MAJOR)
181202
docker tag $(NAME)/standalone-opera:$(TAG_VERSION) $(NAME)/standalone-opera:$(MAJOR)
203+
docker tag $(NAME)/standalone-docker:$(TAG_VERSION) $(NAME)/standalone-docker:$(MAJOR)
182204
docker tag $(NAME)/base:$(TAG_VERSION) $(NAME)/base:$(MAJOR).$(MINOR)
183205
docker tag $(NAME)/hub:$(TAG_VERSION) $(NAME)/hub:$(MAJOR).$(MINOR)
184206
docker tag $(NAME)/distributor:$(TAG_VERSION) $(NAME)/distributor:$(MAJOR).$(MINOR)
@@ -189,9 +211,11 @@ tag_major_minor:
189211
docker tag $(NAME)/node-chrome:$(TAG_VERSION) $(NAME)/node-chrome:$(MAJOR).$(MINOR)
190212
docker tag $(NAME)/node-firefox:$(TAG_VERSION) $(NAME)/node-firefox:$(MAJOR).$(MINOR)
191213
docker tag $(NAME)/node-opera:$(TAG_VERSION) $(NAME)/node-opera:$(MAJOR).$(MINOR)
214+
docker tag $(NAME)/node-docker:$(TAG_VERSION) $(NAME)/node-docker:$(MAJOR).$(MINOR)
192215
docker tag $(NAME)/standalone-chrome:$(TAG_VERSION) $(NAME)/standalone-chrome:$(MAJOR).$(MINOR)
193216
docker tag $(NAME)/standalone-firefox:$(TAG_VERSION) $(NAME)/standalone-firefox:$(MAJOR).$(MINOR)
194217
docker tag $(NAME)/standalone-opera:$(TAG_VERSION) $(NAME)/standalone-opera:$(MAJOR).$(MINOR)
218+
docker tag $(NAME)/standalone-docker:$(TAG_VERSION) $(NAME)/standalone-docker:$(MAJOR).$(MINOR)
195219
docker tag $(NAME)/base:$(TAG_VERSION) $(NAME)/base:$(MAJOR_MINOR_PATCH)
196220
docker tag $(NAME)/hub:$(TAG_VERSION) $(NAME)/hub:$(MAJOR_MINOR_PATCH)
197221
docker tag $(NAME)/distributor:$(TAG_VERSION) $(NAME)/distributor:$(MAJOR_MINOR_PATCH)
@@ -202,9 +226,11 @@ tag_major_minor:
202226
docker tag $(NAME)/node-chrome:$(TAG_VERSION) $(NAME)/node-chrome:$(MAJOR_MINOR_PATCH)
203227
docker tag $(NAME)/node-firefox:$(TAG_VERSION) $(NAME)/node-firefox:$(MAJOR_MINOR_PATCH)
204228
docker tag $(NAME)/node-opera:$(TAG_VERSION) $(NAME)/node-opera:$(MAJOR_MINOR_PATCH)
229+
docker tag $(NAME)/node-docker:$(TAG_VERSION) $(NAME)/node-docker:$(MAJOR_MINOR_PATCH)
205230
docker tag $(NAME)/standalone-chrome:$(TAG_VERSION) $(NAME)/standalone-chrome:$(MAJOR_MINOR_PATCH)
206231
docker tag $(NAME)/standalone-firefox:$(TAG_VERSION) $(NAME)/standalone-firefox:$(MAJOR_MINOR_PATCH)
207232
docker tag $(NAME)/standalone-opera:$(TAG_VERSION) $(NAME)/standalone-opera:$(MAJOR_MINOR_PATCH)
233+
docker tag $(NAME)/standalone-docker:$(TAG_VERSION) $(NAME)/standalone-docker:$(MAJOR_MINOR_PATCH)
208234

209235
release: tag_major_minor
210236
@if ! docker images $(NAME)/base | awk '{ print $$2 }' | grep -q -F $(TAG_VERSION); then echo "$(NAME)/base version $(TAG_VERSION) is not yet built. Please run 'make build'"; false; fi
@@ -217,9 +243,11 @@ release: tag_major_minor
217243
@if ! docker images $(NAME)/node-chrome | awk '{ print $$2 }' | grep -q -F $(TAG_VERSION); then echo "$(NAME)/node-chrome version $(TAG_VERSION) is not yet built. Please run 'make build'"; false; fi
218244
@if ! docker images $(NAME)/node-firefox | awk '{ print $$2 }' | grep -q -F $(TAG_VERSION); then echo "$(NAME)/node-firefox version $(TAG_VERSION) is not yet built. Please run 'make build'"; false; fi
219245
@if ! docker images $(NAME)/node-opera | awk '{ print $$2 }' | grep -q -F $(TAG_VERSION); then echo "$(NAME)/node-opera version $(TAG_VERSION) is not yet built. Please run 'make build'"; false; fi
246+
@if ! docker images $(NAME)/node-docker | awk '{ print $$2 }' | grep -q -F $(TAG_VERSION); then echo "$(NAME)/node-docker version $(TAG_VERSION) is not yet built. Please run 'make build'"; false; fi
220247
@if ! docker images $(NAME)/standalone-chrome | awk '{ print $$2 }' | grep -q -F $(TAG_VERSION); then echo "$(NAME)/standalone-chrome version $(TAG_VERSION) is not yet built. Please run 'make build'"; false; fi
221248
@if ! docker images $(NAME)/standalone-firefox | awk '{ print $$2 }' | grep -q -F $(TAG_VERSION); then echo "$(NAME)/standalone-firefox version $(TAG_VERSION) is not yet built. Please run 'make build'"; false; fi
222249
@if ! docker images $(NAME)/standalone-opera | awk '{ print $$2 }' | grep -q -F $(TAG_VERSION); then echo "$(NAME)/standalone-opera version $(TAG_VERSION) is not yet built. Please run 'make build'"; false; fi
250+
@if ! docker images $(NAME)/standalone-docker | awk '{ print $$2 }' | grep -q -F $(TAG_VERSION); then echo "$(NAME)/standalone-docker version $(TAG_VERSION) is not yet built. Please run 'make build'"; false; fi
223251
docker push $(NAME)/base:$(TAG_VERSION)
224252
docker push $(NAME)/hub:$(TAG_VERSION)
225253
docker push $(NAME)/distributor:$(TAG_VERSION)
@@ -230,9 +258,11 @@ release: tag_major_minor
230258
docker push $(NAME)/node-chrome:$(TAG_VERSION)
231259
docker push $(NAME)/node-firefox:$(TAG_VERSION)
232260
docker push $(NAME)/node-opera:$(TAG_VERSION)
261+
docker push $(NAME)/node-docker:$(TAG_VERSION)
233262
docker push $(NAME)/standalone-chrome:$(TAG_VERSION)
234263
docker push $(NAME)/standalone-firefox:$(TAG_VERSION)
235264
docker push $(NAME)/standalone-opera:$(TAG_VERSION)
265+
docker push $(NAME)/standalone-docker:$(TAG_VERSION)
236266
docker push $(NAME)/base:$(MAJOR)
237267
docker push $(NAME)/hub:$(MAJOR)
238268
docker push $(NAME)/distributor:$(MAJOR)
@@ -243,9 +273,11 @@ release: tag_major_minor
243273
docker push $(NAME)/node-chrome:$(MAJOR)
244274
docker push $(NAME)/node-firefox:$(MAJOR)
245275
docker push $(NAME)/node-opera:$(MAJOR)
276+
docker push $(NAME)/node-docker:$(MAJOR)
246277
docker push $(NAME)/standalone-chrome:$(MAJOR)
247278
docker push $(NAME)/standalone-firefox:$(MAJOR)
248279
docker push $(NAME)/standalone-opera:$(MAJOR)
280+
docker push $(NAME)/standalone-docker:$(MAJOR)
249281
docker push $(NAME)/base:$(MAJOR).$(MINOR)
250282
docker push $(NAME)/hub:$(MAJOR).$(MINOR)
251283
docker push $(NAME)/distributor:$(MAJOR).$(MINOR)
@@ -256,9 +288,11 @@ release: tag_major_minor
256288
docker push $(NAME)/node-chrome:$(MAJOR).$(MINOR)
257289
docker push $(NAME)/node-firefox:$(MAJOR).$(MINOR)
258290
docker push $(NAME)/node-opera:$(MAJOR).$(MINOR)
291+
docker push $(NAME)/node-docker:$(MAJOR).$(MINOR)
259292
docker push $(NAME)/standalone-chrome:$(MAJOR).$(MINOR)
260293
docker push $(NAME)/standalone-firefox:$(MAJOR).$(MINOR)
261294
docker push $(NAME)/standalone-opera:$(MAJOR).$(MINOR)
295+
docker push $(NAME)/standalone-docker:$(MAJOR).$(MINOR)
262296
docker push $(NAME)/base:$(MAJOR_MINOR_PATCH)
263297
docker push $(NAME)/hub:$(MAJOR_MINOR_PATCH)
264298
docker push $(NAME)/distributor:$(MAJOR_MINOR_PATCH)
@@ -269,9 +303,11 @@ release: tag_major_minor
269303
docker push $(NAME)/node-chrome:$(MAJOR_MINOR_PATCH)
270304
docker push $(NAME)/node-firefox:$(MAJOR_MINOR_PATCH)
271305
docker push $(NAME)/node-opera:$(MAJOR_MINOR_PATCH)
306+
docker push $(NAME)/node-docker:$(MAJOR_MINOR_PATCH)
272307
docker push $(NAME)/standalone-chrome:$(MAJOR_MINOR_PATCH)
273308
docker push $(NAME)/standalone-firefox:$(MAJOR_MINOR_PATCH)
274309
docker push $(NAME)/standalone-opera:$(MAJOR_MINOR_PATCH)
310+
docker push $(NAME)/standalone-docker:$(MAJOR_MINOR_PATCH)
275311
docker push $(NAME)/video:$(FFMPEG_TAG_VERSION)-$(BUILD_DATE)
276312

277313
test: test_chrome \
@@ -337,6 +373,7 @@ test_video: video hub chrome firefox opera
337373
ci \
338374
firefox \
339375
opera \
376+
docker \
340377
generate_all \
341378
generate_hub \
342379
generate_distributor \
@@ -347,9 +384,11 @@ test_video: video hub chrome firefox opera
347384
generate_chrome \
348385
generate_firefox \
349386
generate_opera \
387+
generate_docker \
350388
generate_standalone_chrome \
351389
generate_standalone_firefox \
352390
generate_standalone_opera \
391+
generate_standalone_docker \
353392
hub \
354393
distributor \
355394
router \
@@ -359,6 +398,8 @@ test_video: video hub chrome firefox opera
359398
release \
360399
standalone_chrome \
361400
standalone_firefox \
401+
standalone_opera \
402+
standalone_docker \
362403
tag_latest \
363404
tag_and_push_browser_images \
364405
test \

NodeDocker/Dockerfile

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2+
# NOTE: DO *NOT* EDIT THIS FILE. IT IS GENERATED.
3+
# PLEASE UPDATE Dockerfile.txt INSTEAD OF THIS FILE
4+
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
5+
FROM selenium/base:4.0.0-alpha-7-20200921
6+
LABEL authors=SeleniumHQ
7+
8+
USER 1200
9+
10+
#========================
11+
# Selenium Standalone Docker Configuration
12+
#========================
13+
14+
EXPOSE 4444
15+
16+
COPY start-selenium-grid-node-docker.sh \
17+
config.toml \
18+
/opt/bin/
19+
20+
COPY selenium-grid-node-docker.conf /etc/supervisor/conf.d/
21+

NodeDocker/Dockerfile.txt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
USER 1200
2+
3+
#========================
4+
# Selenium Standalone Docker Configuration
5+
#========================
6+
7+
EXPOSE 4444
8+
9+
COPY start-selenium-grid-node-docker.sh \
10+
config.toml \
11+
/opt/bin/
12+
13+
COPY selenium-grid-node-docker.conf /etc/supervisor/conf.d/
14+

NodeDocker/config.toml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
[docker]
2+
# Configs have a mapping between the Docker image to use and the capabilities that need to be matched to
3+
# start a container with the given image.
4+
configs = [
5+
"selenium/standalone-firefox:4.0.0-alpha-7-prerelease-20200921", "{\"browserName\": \"firefox\"}",
6+
"selenium/standalone-chrome:4.0.0-alpha-7-prerelease-20200921", "{\"browserName\": \"chrome\"}",
7+
"selenium/standalone-opera:4.0.0-alpha-7-prerelease-20200921", "{\"browserName\": \"operablink\"}"
8+
]
9+
10+
# URL for connecting to the docker daemon
11+
# host.docker.internal works for macOS and Windows.
12+
# Linux could use --net=host in the `docker run` instruction or 172.17.0.1 in the URI below.
13+
# To have Docker listening through tcp on macOS, install socat and run the following command
14+
# socat -4 TCP-LISTEN:2375,fork UNIX-CONNECT:/var/run/docker.sock
15+
host = "tcp://host.docker.internal:2375"

NodeDocker/generate.sh

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#!/usr/bin/env bash
2+
3+
VERSION=$1
4+
NAMESPACE=$2
5+
AUTHORS=$3
6+
7+
echo "# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" > ./Dockerfile
8+
echo "# NOTE: DO *NOT* EDIT THIS FILE. IT IS GENERATED." >> ./Dockerfile
9+
echo "# PLEASE UPDATE Dockerfile.txt INSTEAD OF THIS FILE" >> ./Dockerfile
10+
echo "# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" >> ./Dockerfile
11+
echo FROM ${NAMESPACE}/base:${VERSION} >> ./Dockerfile
12+
echo LABEL authors="$AUTHORS" >> ./Dockerfile
13+
echo "" >> ./Dockerfile
14+
cat ./Dockerfile.txt >> ./Dockerfile
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
; Documentation of this file format -> http://supervisord.org/configuration.html
2+
3+
[program:selenium-grid-node-docker]
4+
5+
priority=0
6+
command=/opt/bin/start-selenium-grid-node-docker.sh
7+
autostart=true
8+
autorestart=false
9+
startsecs=0
10+
startretries=0
11+
12+
;Logs (all Hub activity redirected to stdout so it can be seen through "docker logs"
13+
redirect_stderr=true
14+
stdout_logfile=/dev/stdout
15+
stdout_logfile_maxbytes=0
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#!/usr/bin/env bash
2+
3+
# set -e: exit asap if a command exits with a non-zero status
4+
set -e
5+
6+
echo "Starting Selenium Grid Node Docker..."
7+
8+
if [[ -z "${SE_EVENT_BUS_HOST}" ]]; then
9+
echo "SE_EVENT_BUS_HOST not set, exiting!" 1>&2
10+
exit 1
11+
fi
12+
13+
if [[ -z "${SE_EVENT_BUS_PUBLISH_PORT}" ]]; then
14+
echo "SE_EVENT_BUS_PUBLISH_PORT not set, exiting!" 1>&2
15+
exit 1
16+
fi
17+
18+
if [[ -z "${SE_EVENT_BUS_SUBSCRIBE_PORT}" ]]; then
19+
echo "SE_EVENT_BUS_SUBSCRIBE_PORT not set, exiting!" 1>&2
20+
exit 1
21+
fi
22+
23+
java ${JAVA_OPTS} -jar /opt/selenium/selenium-server.jar node \
24+
--publish-events tcp://"${SE_EVENT_BUS_HOST}":${SE_EVENT_BUS_PUBLISH_PORT} \
25+
--subscribe-events tcp://"${SE_EVENT_BUS_HOST}":${SE_EVENT_BUS_SUBSCRIBE_PORT} \
26+
--detect-drivers false \
27+
--config /opt/bin/config.toml \
28+
${SE_OPTS}

0 commit comments

Comments
 (0)