Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Base/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ COPY supervisord.conf /etc
RUN mkdir -p /opt/selenium /var/run/supervisor /var/log/supervisor \
&& touch /opt/selenium/config.json \
&& chmod -R 777 /opt/selenium /var/run/supervisor /var/log/supervisor /etc/passwd \
&& wget --no-verbose https://github.com/SeleniumHQ/docker-selenium/raw/alpha-jars/selenium-server-4.0.0-alpha-7-bd15e4e88a.jar \
&& wget --no-verbose https://github.com/SeleniumHQ/docker-selenium/raw/alpha-jars/selenium-server-4.0.0-alpha-7-e23236a2c9.jar \
-O /opt/selenium/selenium-server.jar \
# && wget --no-verbose https://selenium-release.storage.googleapis.com/4.0-alpha-6/selenium-server-4.0.0-alpha-6.jar \
# -O /opt/selenium/selenium-server.jar \
Expand Down
17 changes: 14 additions & 3 deletions Distributor/start-selenium-grid-distributor.sh
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,24 @@ if [[ -z "${SE_SESSIONS_MAP_PORT}" ]]; then
exit 1
fi

if [[ -z "${SE_SESSION_QUEUER_HOST}" ]]; then
echo "SE_SESSION_QUEUER_HOST not set, exiting!" 1>&2
exit 1
fi

if [[ -z "${SE_SESSION_QUEUER_PORT}" ]]; then
echo "SE_SESSION_QUEUER_PORT not set, exiting!" 1>&2
exit 1
fi

if [ ! -z "$SE_OPTS" ]; then
echo "Appending Selenium options: ${SE_OPTS}"
fi

java ${JAVA_OPTS} -jar /opt/selenium/selenium-server.jar distributor \
--sessions-host "${SE_SESSIONS_MAP_HOST}" --sessions-port ${SE_SESSIONS_MAP_PORT} \
--publish-events tcp://"${SE_EVENT_BUS_HOST}":${SE_EVENT_BUS_PUBLISH_PORT} \
--subscribe-events tcp://"${SE_EVENT_BUS_HOST}":${SE_EVENT_BUS_SUBSCRIBE_PORT} \
--sessions-host "${SE_SESSIONS_MAP_HOST}" --sessions-port "${SE_SESSIONS_MAP_PORT}" \
--sessionqueuer-host "${SE_SESSION_QUEUER_HOST}" --sessionqueuer-port "${SE_SESSION_QUEUER_PORT}" \
--publish-events tcp://"${SE_EVENT_BUS_HOST}":"${SE_EVENT_BUS_PUBLISH_PORT}" \
--subscribe-events tcp://"${SE_EVENT_BUS_HOST}":"${SE_EVENT_BUS_SUBSCRIBE_PORT}" \
--bind-bus false \
${SE_OPTS}
20 changes: 20 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ all: hub \
distributor \
router \
sessions \
sessionqueuer \
event_bus \
chrome \
firefox \
Expand All @@ -32,6 +33,7 @@ generate_all: \
generate_distributor \
generate_router \
generate_sessions \
generate_sessionqueuer \
generate_event_bus \
generate_node_base \
generate_chrome \
Expand Down Expand Up @@ -74,6 +76,12 @@ generate_sessions:
sessions: base generate_sessions
cd ./Sessions && docker build $(BUILD_ARGS) -t $(NAME)/sessions:$(TAG_VERSION) .

generate_sessionqueuer:
cd ./SessionQueuer && ./generate.sh $(TAG_VERSION) $(NAMESPACE) $(AUTHORS)

sessionqueuer: base generate_sessionqueuer
cd ./SessionQueuer && docker build $(BUILD_ARGS) -t $(NAME)/session-queuer:$(TAG_VERSION) .

generate_event_bus:
cd ./EventBus && ./generate.sh $(TAG_VERSION) $(NAMESPACE) $(AUTHORS)

Expand Down Expand Up @@ -157,6 +165,7 @@ tag_latest:
docker tag $(NAME)/distributor:$(TAG_VERSION) $(NAME)/distributor:latest
docker tag $(NAME)/router:$(TAG_VERSION) $(NAME)/router:latest
docker tag $(NAME)/sessions:$(TAG_VERSION) $(NAME)/sessions:latest
docker tag $(NAME)/session-queuer:$(TAG_VERSION) $(NAME)/session-queuer:latest
docker tag $(NAME)/event-bus:$(TAG_VERSION) $(NAME)/event-bus:latest
docker tag $(NAME)/node-base:$(TAG_VERSION) $(NAME)/node-base:latest
docker tag $(NAME)/node-chrome:$(TAG_VERSION) $(NAME)/node-chrome:latest
Expand All @@ -174,6 +183,7 @@ release_latest:
docker push $(NAME)/distributor:latest
docker push $(NAME)/router:latest
docker push $(NAME)/sessions:latest
docker push $(NAME)/session-queuer:latest
docker push $(NAME)/event-bus:latest
docker push $(NAME)/node-base:latest
docker push $(NAME)/node-chrome:latest
Expand All @@ -191,6 +201,7 @@ tag_major_minor:
docker tag $(NAME)/distributor:$(TAG_VERSION) $(NAME)/distributor:$(MAJOR)
docker tag $(NAME)/router:$(TAG_VERSION) $(NAME)/router:$(MAJOR)
docker tag $(NAME)/sessions:$(TAG_VERSION) $(NAME)/sessions:$(MAJOR)
docker tag $(NAME)/session-queuer:$(TAG_VERSION) $(NAME)/session-queuer:$(MAJOR)
docker tag $(NAME)/event-bus:$(TAG_VERSION) $(NAME)/event-bus:$(MAJOR)
docker tag $(NAME)/node-base:$(TAG_VERSION) $(NAME)/node-base:$(MAJOR)
docker tag $(NAME)/node-chrome:$(TAG_VERSION) $(NAME)/node-chrome:$(MAJOR)
Expand All @@ -206,6 +217,7 @@ tag_major_minor:
docker tag $(NAME)/distributor:$(TAG_VERSION) $(NAME)/distributor:$(MAJOR).$(MINOR)
docker tag $(NAME)/router:$(TAG_VERSION) $(NAME)/router:$(MAJOR).$(MINOR)
docker tag $(NAME)/sessions:$(TAG_VERSION) $(NAME)/sessions:$(MAJOR).$(MINOR)
docker tag $(NAME)/session-queuer:$(TAG_VERSION) $(NAME)/session-queuer:$(MAJOR).$(MINOR)
docker tag $(NAME)/event-bus:$(TAG_VERSION) $(NAME)/event-bus:$(MAJOR).$(MINOR)
docker tag $(NAME)/node-base:$(TAG_VERSION) $(NAME)/node-base:$(MAJOR).$(MINOR)
docker tag $(NAME)/node-chrome:$(TAG_VERSION) $(NAME)/node-chrome:$(MAJOR).$(MINOR)
Expand All @@ -221,6 +233,7 @@ tag_major_minor:
docker tag $(NAME)/distributor:$(TAG_VERSION) $(NAME)/distributor:$(MAJOR_MINOR_PATCH)
docker tag $(NAME)/router:$(TAG_VERSION) $(NAME)/router:$(MAJOR_MINOR_PATCH)
docker tag $(NAME)/sessions:$(TAG_VERSION) $(NAME)/sessions:$(MAJOR_MINOR_PATCH)
docker tag $(NAME)/session-queuer:$(TAG_VERSION) $(NAME)/session-queuer:$(MAJOR_MINOR_PATCH)
docker tag $(NAME)/event-bus:$(TAG_VERSION) $(NAME)/event-bus:$(MAJOR_MINOR_PATCH)
docker tag $(NAME)/node-base:$(TAG_VERSION) $(NAME)/node-base:$(MAJOR_MINOR_PATCH)
docker tag $(NAME)/node-chrome:$(TAG_VERSION) $(NAME)/node-chrome:$(MAJOR_MINOR_PATCH)
Expand All @@ -238,6 +251,7 @@ release: tag_major_minor
@if ! docker images $(NAME)/distributor | awk '{ print $$2 }' | grep -q -F $(TAG_VERSION); then echo "$(NAME)/distributor version $(TAG_VERSION) is not yet built. Please run 'make build'"; false; fi
@if ! docker images $(NAME)/router | awk '{ print $$2 }' | grep -q -F $(TAG_VERSION); then echo "$(NAME)/router version $(TAG_VERSION) is not yet built. Please run 'make build'"; false; fi
@if ! docker images $(NAME)/sessions | awk '{ print $$2 }' | grep -q -F $(TAG_VERSION); then echo "$(NAME)/sessions version $(TAG_VERSION) is not yet built. Please run 'make build'"; false; fi
@if ! docker images $(NAME)/session-queuer | awk '{ print $$2 }' | grep -q -F $(TAG_VERSION); then echo "$(NAME)/session-queuer version $(TAG_VERSION) is not yet built. Please run 'make build'"; false; fi
@if ! docker images $(NAME)/event-bus | awk '{ print $$2 }' | grep -q -F $(TAG_VERSION); then echo "$(NAME)/event-bus version $(TAG_VERSION) is not yet built. Please run 'make build'"; false; fi
@if ! docker images $(NAME)/node-base | awk '{ print $$2 }' | grep -q -F $(TAG_VERSION); then echo "$(NAME)/node-base version $(TAG_VERSION) is not yet built. Please run 'make build'"; false; fi
@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
Expand All @@ -253,6 +267,7 @@ release: tag_major_minor
docker push $(NAME)/distributor:$(TAG_VERSION)
docker push $(NAME)/router:$(TAG_VERSION)
docker push $(NAME)/sessions:$(TAG_VERSION)
docker push $(NAME)/session-queuer:$(TAG_VERSION)
docker push $(NAME)/event-bus:$(TAG_VERSION)
docker push $(NAME)/node-base:$(TAG_VERSION)
docker push $(NAME)/node-chrome:$(TAG_VERSION)
Expand All @@ -268,6 +283,7 @@ release: tag_major_minor
docker push $(NAME)/distributor:$(MAJOR)
docker push $(NAME)/router:$(MAJOR)
docker push $(NAME)/sessions:$(MAJOR)
docker push $(NAME)/session-queuer:$(MAJOR)
docker push $(NAME)/event-bus:$(MAJOR)
docker push $(NAME)/node-base:$(MAJOR)
docker push $(NAME)/node-chrome:$(MAJOR)
Expand All @@ -283,6 +299,7 @@ release: tag_major_minor
docker push $(NAME)/distributor:$(MAJOR).$(MINOR)
docker push $(NAME)/router:$(MAJOR).$(MINOR)
docker push $(NAME)/sessions:$(MAJOR).$(MINOR)
docker push $(NAME)/session-queuer:$(MAJOR).$(MINOR)
docker push $(NAME)/event-bus:$(MAJOR).$(MINOR)
docker push $(NAME)/node-base:$(MAJOR).$(MINOR)
docker push $(NAME)/node-chrome:$(MAJOR).$(MINOR)
Expand All @@ -298,6 +315,7 @@ release: tag_major_minor
docker push $(NAME)/distributor:$(MAJOR_MINOR_PATCH)
docker push $(NAME)/router:$(MAJOR_MINOR_PATCH)
docker push $(NAME)/sessions:$(MAJOR_MINOR_PATCH)
docker push $(NAME)/session-queuer:$(MAJOR_MINOR_PATCH)
docker push $(NAME)/event-bus:$(MAJOR_MINOR_PATCH)
docker push $(NAME)/node-base:$(MAJOR_MINOR_PATCH)
docker push $(NAME)/node-chrome:$(MAJOR_MINOR_PATCH)
Expand Down Expand Up @@ -379,6 +397,7 @@ test_video: video hub chrome firefox opera
generate_distributor \
generate_router \
generate_sessions \
generate_sessionqueuer \
generate_event_bus \
generate_node_base \
generate_chrome \
Expand All @@ -393,6 +412,7 @@ test_video: video hub chrome firefox opera
distributor \
router \
sessions \
sessionqueuer \
event_bus \
node_base \
release \
Expand Down
15 changes: 13 additions & 2 deletions Router/start-selenium-grid-router.sh
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,22 @@ if [[ -z "${SE_DISTRIBUTOR_PORT}" ]]; then
exit 1
fi

if [[ -z "${SE_SESSION_QUEUER_HOST}" ]]; then
echo "SE_SESSION_QUEUER_HOST not set, exiting!" 1>&2
exit 1
fi

if [[ -z "${SE_SESSION_QUEUER_PORT}" ]]; then
echo "SE_SESSION_QUEUER_PORT not set, exiting!" 1>&2
exit 1
fi

if [ ! -z "$SE_OPTS" ]; then
echo "Appending Selenium options: ${SE_OPTS}"
fi

java ${JAVA_OPTS} -jar /opt/selenium/selenium-server.jar router \
--sessions-host "${SE_SESSIONS_MAP_HOST}" --sessions-port ${SE_SESSIONS_MAP_PORT} \
--distributor-host "${SE_DISTRIBUTOR_HOST}" --distributor-port ${SE_DISTRIBUTOR_PORT} \
--sessions-host "${SE_SESSIONS_MAP_HOST}" --sessions-port "${SE_SESSIONS_MAP_PORT}" \
--distributor-host "${SE_DISTRIBUTOR_HOST}" --distributor-port "${SE_DISTRIBUTOR_PORT}" \
--sessionqueuer-host "${SE_SESSION_QUEUER_HOST}" --sessionqueuer-port "${SE_SESSION_QUEUER_PORT}" \
--relax-checks true ${SE_OPTS}
19 changes: 19 additions & 0 deletions SessionQueuer/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
# NOTE: DO *NOT* EDIT THIS FILE. IT IS GENERATED.
# PLEASE UPDATE Dockerfile.txt INSTEAD OF THIS FILE
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FROM selenium/base:4.0.0-alpha-7-prerelease-20201009
LABEL authors=SeleniumHQ

USER 1200

#========================
# Selenium SessionQueuer Configuration
#========================

EXPOSE 5559

COPY start-selenium-grid-sessionqueuer.sh \
/opt/bin/

COPY selenium-grid-sessionqueuer.conf /etc/supervisor/conf.d/
12 changes: 12 additions & 0 deletions SessionQueuer/Dockerfile.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
USER 1200

#========================
# Selenium SessionQueuer Configuration
#========================

EXPOSE 5559

COPY start-selenium-grid-session-queuer.sh \
/opt/bin/

COPY selenium-grid-session-queuer.conf /etc/supervisor/conf.d/
14 changes: 14 additions & 0 deletions SessionQueuer/generate.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#!/usr/bin/env bash

VERSION=$1
NAMESPACE=$2
AUTHORS=$3

echo "# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" > ./Dockerfile
echo "# NOTE: DO *NOT* EDIT THIS FILE. IT IS GENERATED." >> ./Dockerfile
echo "# PLEASE UPDATE Dockerfile.txt INSTEAD OF THIS FILE" >> ./Dockerfile
echo "# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" >> ./Dockerfile
echo FROM ${NAMESPACE}/base:${VERSION} >> ./Dockerfile
echo LABEL authors="$AUTHORS" >> ./Dockerfile
echo "" >> ./Dockerfile
cat ./Dockerfile.txt >> ./Dockerfile
15 changes: 15 additions & 0 deletions SessionQueuer/selenium-grid-session-queuer.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
; Documentation of this file format -> http://supervisord.org/configuration.html

[program:selenium-grid-session-queuer]

priority=0
command=/opt/bin/start-selenium-grid-session-queuer.sh
autostart=true
autorestart=false
startsecs=0
startretries=0

;Logs (all Hub activity redirected to stdout so it can be seen through "docker logs"
redirect_stderr=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
30 changes: 30 additions & 0 deletions SessionQueuer/start-selenium-grid-session-queuer.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#!/usr/bin/env bash

# set -e: exit asap if a command exits with a non-zero status
set -e

echo "Starting Selenium Grid SessionQueuer..."

if [[ -z "${SE_EVENT_BUS_HOST}" ]]; then
echo "SE_EVENT_BUS_HOST not set, exiting!" 1>&2
exit 1
fi

if [[ -z "${SE_EVENT_BUS_PUBLISH_PORT}" ]]; then
echo "SE_EVENT_BUS_PUBLISH_PORT not set, exiting!" 1>&2
exit 1
fi

if [[ -z "${SE_EVENT_BUS_SUBSCRIBE_PORT}" ]]; then
echo "SE_EVENT_BUS_SUBSCRIBE_PORT not set, exiting!" 1>&2
exit 1
fi

if [ ! -z "$SE_OPTS" ]; then
echo "Appending Selenium options: ${SE_OPTS}"
fi

java ${JAVA_OPTS} -jar /opt/selenium/selenium-server.jar sessionqueuer \
--publish-events tcp://"${SE_EVENT_BUS_HOST}":${SE_EVENT_BUS_PUBLISH_PORT} \
--subscribe-events tcp://"${SE_EVENT_BUS_HOST}":${SE_EVENT_BUS_SUBSCRIBE_PORT} \
${SE_OPTS}
54 changes: 36 additions & 18 deletions docker-compose-v3-full-grid.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@
version: "3"
services:
selenium-event-bus:
image: selenium/event-bus:4.0.0-alpha-7-prerelease-20201009
image: selenium/event-bus:4.0.0-alpha-7-20201118
container_name: selenium-event-bus
ports:
- "4442:4442"
- "4443:4443"
- "5557:5557"

selenium-sessions:
image: selenium/sessions:4.0.0-alpha-7-prerelease-20201009
image: selenium/sessions:4.0.0-alpha-7-20201118
container_name: selenium-sessions
ports:
- "5556:5556"
Expand All @@ -23,37 +23,55 @@ services:
- SE_EVENT_BUS_PUBLISH_PORT=4442
- SE_EVENT_BUS_SUBSCRIBE_PORT=4443

selenium-session-queuer:
image: selenium/session-queuer:4.0.0-alpha-7-20201118
container_name: selenium-session-queuer
ports:
- "5559:5559"
depends_on:
- selenium-event-bus
environment:
- SE_EVENT_BUS_HOST=selenium-event-bus
- SE_EVENT_BUS_PUBLISH_PORT=4442
- SE_EVENT_BUS_SUBSCRIBE_PORT=4443

selenium-distributor:
image: selenium/distributor:4.0.0-alpha-7-prerelease-20201009
image: selenium/distributor:4.0.0-alpha-7-20201118
container_name: selenium-distributor
ports:
- "5553:5553"
depends_on:
- selenium-event-bus
- selenium-sessions
- selenium-session-queuer
environment:
- SE_EVENT_BUS_HOST=selenium-event-bus
- SE_EVENT_BUS_PUBLISH_PORT=4442
- SE_EVENT_BUS_SUBSCRIBE_PORT=4443
- SE_SESSIONS_MAP_HOST=selenium-sessions
- SE_SESSIONS_MAP_PORT=5556
- SE_SESSION_QUEUER_HOST=selenium-session-queuer
- SE_SESSION_QUEUER_PORT=5559

selenium-router:
image: selenium/router:4.0.0-alpha-7-prerelease-20201009
image: selenium/router:4.0.0-alpha-7-20201118
container_name: selenium-router
ports:
- "4444:4444"
depends_on:
- selenium-distributor
- selenium-sessions
- selenium-session-queuer
environment:
- SE_DISTRIBUTOR_HOST=selenium-distributor
- SE_DISTRIBUTOR_PORT=5553
- SE_SESSIONS_MAP_HOST=selenium-sessions
- SE_SESSIONS_MAP_PORT=5556
- SE_SESSION_QUEUER_HOST=selenium-session-queuer
- SE_SESSION_QUEUER_PORT=5559

chrome:
image: selenium/node-chrome:4.0.0-alpha-7-prerelease-20201009
image: selenium/node-chrome:4.0.0-alpha-7-20201118
volumes:
- /dev/shm:/dev/shm
depends_on:
Expand All @@ -66,7 +84,7 @@ services:
- "6900:5900"

firefox:
image: selenium/node-firefox:4.0.0-alpha-7-prerelease-20201009
image: selenium/node-firefox:4.0.0-alpha-7-20201118
volumes:
- /dev/shm:/dev/shm
depends_on:
Expand All @@ -78,15 +96,15 @@ services:
ports:
- "6901:5900"

opera:
image: selenium/node-opera:4.0.0-alpha-7-prerelease-20201009
volumes:
- /dev/shm:/dev/shm
depends_on:
- selenium-event-bus
environment:
- SE_EVENT_BUS_HOST=selenium-event-bus
- SE_EVENT_BUS_PUBLISH_PORT=4442
- SE_EVENT_BUS_SUBSCRIBE_PORT=4443
ports:
- "6902:5900"
# opera:
# image: selenium/node-opera:4.0.0-alpha-7-20201118
# volumes:
# - /dev/shm:/dev/shm
# depends_on:
# - selenium-event-bus
# environment:
# - SE_EVENT_BUS_HOST=selenium-event-bus
# - SE_EVENT_BUS_PUBLISH_PORT=4442
# - SE_EVENT_BUS_SUBSCRIBE_PORT=4443
# ports:
# - "6902:5900"