Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(package): docker-selenium-hub addition and selenium-chromium cleanup #30290

Open
wants to merge 4 commits into
base: main
Choose a base branch
from
Open
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
152 changes: 89 additions & 63 deletions docker-selenium.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ package:
# 'package format error' when trying to install the package. The workaround is
# to replace '-' with '.', then mangling the version to replace back.
version: 4.25.0.20240922
epoch: 0
epoch: 1
description: Provides a simple way to run Selenium Grid with Chrome, Firefox, and Edge using Docker, making it easier to perform browser automation
copyright:
- license: Apache-2.0
Expand All @@ -15,44 +15,14 @@ package:
- x86_64
dependencies:
runtime:
- Xvfb
- bash
- busybox
- chromium
- chromium-docker-selenium-compat
- coreutils
- fluxbox
- font-ipa
- font-liberation
- font-misc-cyrillic
- font-noto-emoji
- font-ubuntu
- font-wqy-zenhei
- fontconfig
- freetype
- glib
- glibc-locale-en
- libfontconfig1
- libgcc
- libnss
- libnss-tools
- libxcb
- mcookie
- novnc
- openjdk-11
- pulseaudio
- selenium-server-compat
- sudo-rs
- supervisor
- ttf-dejavu
- tzdata
- websockify
- x11vnc
- xauth
- xkbcomp
- xkeyboard-config
- xmessage
- xvfb-run

environment:
contents:
Expand Down Expand Up @@ -129,38 +99,6 @@ pipeline:
io.netty:netty-codec-http:4.1.108.Final \
io.grpc:grpc-netty:${GRPC_VERSION} > ${{targets.destdir}}/external_jars/.classpath.txt

# https://github.com/SeleniumHQ/docker-selenium/blob/trunk/NodeBase/Dockerfile
- working-directory: NodeBase
pipeline:
- runs: |
install -Dm755 start-selenium-node.sh ${{targets.destdir}}/opt/bin/
install -Dm755 start-xvfb.sh ${{targets.destdir}}/opt/bin/
install -Dm755 selenium.conf ${{targets.destdir}}/etc/supervisor/conf.d/
install -Dm755 start-vnc.sh ${{targets.destdir}}/opt/bin/
install -Dm755 start-novnc.sh ${{targets.destdir}}/opt/bin/
install -Dm755 selenium_grid_logo.png ${{targets.destdir}}/usr/share/images/fluxbox/ubuntu-light.png
install -Dm755 generate_config ${{targets.destdir}}/opt/bin/generate_config

mkdir -p ${{targets.destdir}}/home/$SEL_USER/.fluxbox
mkdir -p ${{targets.destdir}}/tmp/.X11-unix
mkdir -p ${{targets.destdir}}/home/$SEL_USER/.vnc
mkdir -p ${{targets.destdir}}/opt/selenium
x11vnc -storepasswd $(cat ${{targets.destdir}}/opt/selenium/initialPasswd) ${{targets.destdir}}/home/$SEL_USER/.vnc/passwd

# https://github.com/SeleniumHQ/docker-selenium/blob/trunk/NodeChrome/Dockerfile
- working-directory: NodeChrome
pipeline:
- runs: |
install -Dm755 wrap_chrome_binary ${{targets.destdir}}/opt/bin/wrap_chrome_binary

# https://github.com/SeleniumHQ/docker-selenium/blob/trunk/Standalone/Dockerfile
- working-directory: Standalone
pipeline:
- runs: |
install -Dm755 start-selenium-standalone.sh ${{targets.destdir}}/opt/bin/start-selenium-standalone.sh
install -Dm755 selenium.conf ${{targets.destdir}}/etc/supervisor/conf.d/
install -Dm755 generate_config ${{targets.destdir}}/opt/bin/generate_config

- uses: strip

subpackages:
Expand All @@ -182,6 +120,94 @@ subpackages:
# The extra 0 is to unset the setuid bit apparently.
chmod 00775 ${{targets.subpkgdir}}/etc/supervisord.conf

# selenium-hub does not handle rendering or direct interaction with browsers
# we can skip adding chromium, Xvfb, fluxbox, and related font packages.
- name: docker-selenium-hub
description: Docker Selenium Hub
pipeline:
- runs: |
mkdir -p ${{targets.subpkgdir}}/opt/bin
# https://github.com/SeleniumHQ/docker-selenium/blob/trunk/Hub/Dockerfile
- working-directory: Hub
pipeline:
- runs: |
mkdir -p ${{targets.subpkgdir}}/etc/supervisor/conf.d
cp selenium-grid-hub.conf ${{targets.subpkgdir}}/etc/supervisor/conf.d/
install -Dm755 start-selenium-grid-hub.sh ${{targets.subpkgdir}}/opt/bin/

- name: docker-selenium-standalone-chrome
description: Docker Selenium supervisor configuration
dependencies:
runtime:
- Xvfb
- chromium
- chromium-docker-selenium-compat
- fluxbox
- font-ipa
- font-liberation
- font-misc-cyrillic
- font-noto-emoji
- font-ubuntu
- font-wqy-zenhei
- fontconfig
- freetype
- glib
- glibc-locale-en
- libfontconfig1
- libgcc
- libnss
- libnss-tools
- libxcb
- mcookie
- novnc
- openjdk-11
- pulseaudio
- pulseaudio-utils
- ttf-dejavu
- websockify
- x11vnc
- xauth
- xkbcomp
- xkeyboard-config
- xmessage
- xvfb-run
pipeline:
- runs: |
mkdir -p ${{targets.subpkgdir}}/etc
mkdir -p ${{targets.subpkgdir}}/opt/bin
# https://github.com/SeleniumHQ/docker-selenium/blob/trunk/NodeBase/Dockerfile
- working-directory: NodeBase
pipeline:
- runs: |
mkdir -p ${{targets.subpkgdir}}/etc/supervisor/conf.d
mkdir -p ${{targets.subpkgdir}}/usr/share/images/fluxbox
cp start-selenium-node.sh ${{targets.subpkgdir}}/opt/bin/
cp start-xvfb.sh ${{targets.subpkgdir}}/opt/bin/
cp selenium.conf ${{targets.subpkgdir}}/etc/supervisor/conf.d/
cp start-vnc.sh ${{targets.subpkgdir}}/opt/bin/
cp start-novnc.sh ${{targets.subpkgdir}}/opt/bin/
cp selenium_grid_logo.png ${{targets.subpkgdir}}/usr/share/images/fluxbox/ubuntu-light.png
cp generate_relay_config ${{targets.subpkgdir}}/opt/bin/generate_relay_config

mkdir -p ${{targets.subpkgdir}}/home/$SEL_USER/.fluxbox
mkdir -p ${{targets.subpkgdir}}/tmp/.X11-unix
mkdir -p ${{targets.subpkgdir}}/home/$SEL_USER/.vnc
mkdir -p ${{targets.subpkgdir}}/opt/selenium
mkdir -p ${{targets.subpkgdir}}/opt/selenium
echo "${SEL_PASSWD}" | x11vnc -storepasswd - ${{targets.subpkgdir}}/home/$SEL_USER/.vnc/passwd
# https://github.com/SeleniumHQ/docker-selenium/blob/trunk/NodeChrome/Dockerfile
- working-directory: NodeChrome
pipeline:
- runs: |
cp wrap_chrome_binary ${{targets.subpkgdir}}/opt/bin/wrap_chrome_binary
# https://github.com/SeleniumHQ/docker-selenium/blob/trunk/Standalone/Dockerfile
- working-directory: Standalone
pipeline:
- runs: |
cp start-selenium-standalone.sh ${{targets.subpkgdir}}/opt/bin/start-selenium-standalone.sh
cp selenium.conf ${{targets.subpkgdir}}/etc/supervisor/conf.d/
cp generate_config ${{targets.subpkgdir}}/opt/bin/generate_config

update:
enabled: true
ignore-regex-patterns:
Expand Down
Loading