load("@rules_pkg//:pkg.bzl", "pkg_tar") load("//common/private:passwd.bzl", "passwd_entry", "passwd_file") load(":docker.bzl", "docker_image") REGISTRY = "localhost:5000" # Create a passwd file with a root and selenium user and uid. passwd_entry( name = "root_user", gid = 0, uid = 0, username = "root", ) passwd_entry( name = "seluser", home = "/home/seluser", info = "Selenium User", uid = 1002, username = "seluser", ) passwd_file( name = "passwd", entries = [ ":root_user", ":seluser", ], ) pkg_tar( name = "passwd-tar", srcs = [":passwd"], mode = "0644", package_dir = "etc", ) ENTRY_POINT = [ "java", "-jar", "/opt/selenium/bin/selenium", ] docker_image( name = "grid-base", base = "@java_image_base", entrypoint = ENTRY_POINT, tars = [ ":grid-binary", ":passwd-tar", ], user = "seluser", workdir = "/app", ) docker_image( name = "distributor-image", base = ":grid-base", entrypoint = ENTRY_POINT + ["distributor"], ports = [ "5553/tcp", # Web ], ) docker_image( name = "event-bus-image", base = ":grid-base", entrypoint = ENTRY_POINT + ["event-bus"], ports = [ "5557/tcp", # Web "4442/tcp", # ZeroMQ "4443/tcp", ], ) docker_image( name = "router-image", base = ":grid-base", entrypoint = ENTRY_POINT + ["router"], ports = [ "4444/tcp", ], ) docker_image( name = "session-map-image", base = ":grid-base", entrypoint = ENTRY_POINT + ["sessions"], ports = [ "5556/tcp", # Web "4442/tcp", # ZeroMQ "4443/tcp", ], ) docker_image( name = "session-queue-image", base = ":grid-base", entrypoint = ENTRY_POINT + ["sessionqueue"], ports = [ "5559/tcp", # Web "4442/tcp", # ZeroMQ "4443/tcp", ], ) pkg_tar( name = "grid-binary", srcs = [ "//java/src/org/openqa/selenium/grid:executable-grid", ], mode = "0755", package_dir = "/opt/selenium/bin", ) pkg_tar( name = "one-shot", srcs = [ "//java/src/org/openqa/selenium/grid/node/k8s", ], package_dir = "/opt/selenium", ) pkg_tar( name = "start-scripts", srcs = [ ":selenium.sh", ], package_dir = "/opt/selenium/bin", ) docker_image( name = "chrome-node", base = "@chrome_standalone", entrypoint = [ "/opt/selenium/bin/selenium.sh", "node", ], ports = [ "5555", # Selenium "5900", # vnc, ], tars = [ ":grid-binary", ":one-shot", ":start-scripts", ], user = "seluser", ) docker_image( name = "firefox-node", base = "@firefox_standalone", entrypoint = [ "/opt/selenium/bin/selenium.sh", "node", ], ports = [ "5555", # Selenium "5900", # vnc, ], tars = [ ":grid-binary", ":one-shot", ":start-scripts", ], user = "seluser", )