|
| 1 | +# Usage |
| 2 | +# make setup #first time |
| 3 | +# make chrome=3 firefox=5 |
| 4 | +# note is destructive, firsts `compose down` |
| 5 | +# warns if your service is not listed in the `docker-compose.yml` |
| 6 | +# make cleanup |
| 7 | +# |
| 8 | +# All in one |
| 9 | +# make setup compose chrome=3 firefox=5 see browser=firefox node=5 |
| 10 | +include .env |
| 11 | + |
| 12 | +ECHOERR=sh -c 'awk " BEGIN { print \"-- ERROR: $$1\" > \"/dev/fd/2\" }"' ECHOERR |
| 13 | +# TODO: Output warning in color: yellow |
| 14 | +ECHOWARN=sh -c 'awk " BEGIN { print \"-- WARN: $$1\" > \"/dev/fd/2\" }"' ECHOWARN |
| 15 | + |
| 16 | +default: compose |
| 17 | + |
| 18 | +docker-compose.yml: |
| 19 | + wget -nv "https://raw.githubusercontent.com/elgalu/docker-selenium/latest/docker-compose.yml" |
| 20 | + |
| 21 | +.env: |
| 22 | + wget -nv "https://raw.githubusercontent.com/elgalu/docker-selenium/latest/.env" |
| 23 | + |
| 24 | +mk/install_vnc.sh: |
| 25 | + wget -nv "https://raw.githubusercontent.com/elgalu/docker-selenium/latest/mk/install_vnc.sh" \ |
| 26 | + -O mk/install_vnc.sh |
| 27 | + |
| 28 | +mk/vnc_cask.rb: |
| 29 | + wget -nv "https://raw.githubusercontent.com/elgalu/docker-selenium/latest/mk/vnc_cask.rb" \ |
| 30 | + -O mk/vnc_cask.rb |
| 31 | + |
| 32 | +mk/see.sh: |
| 33 | + wget -nv "https://raw.githubusercontent.com/elgalu/docker-selenium/latest/mk/see.sh" \ |
| 34 | + -O mk/see.sh |
| 35 | + |
| 36 | +mk/wait.sh: |
| 37 | + wget -nv "https://raw.githubusercontent.com/elgalu/docker-selenium/latest/mk/wait.sh" \ |
| 38 | + -O mk/wait.sh |
| 39 | + |
| 40 | +install_vnc: |
| 41 | + ./mk/install_vnc.sh |
| 42 | + |
| 43 | +mk: |
| 44 | + mkdir -p mk |
| 45 | + |
| 46 | +docker: |
| 47 | + @if ! docker --version; then \ |
| 48 | + ${ECHOERR} "We need docker installed" ; \ |
| 49 | + ${ECHOERR} "google: 'install docker'" ; \ |
| 50 | + exit 1; \ |
| 51 | + fi |
| 52 | + |
| 53 | +docker-compose: |
| 54 | + @if ! docker-compose --version; then \ |
| 55 | + ${ECHOERR} "We need docker installed" ; \ |
| 56 | + ${ECHOERR} "google: 'install docker-compose'" ; \ |
| 57 | + exit 1; \ |
| 58 | + fi |
| 59 | + |
| 60 | +pull: |
| 61 | + # Only pull for end users |
| 62 | + @if [ "${TESTING}" != "true" ]; then \ |
| 63 | + docker pull elgalu/selenium:latest > mk/docker-pull.log ; \ |
| 64 | + fi |
| 65 | + |
| 66 | +warn_vncviewer: |
| 67 | + # Only check if not in a CI server |
| 68 | + @if [ "${BUILD_NUMBER}" = "" ]; then \ |
| 69 | + if ! eval ${VNC_CHECK_CMD}; then \ |
| 70 | + ${ECHOWARN} ${VNC_CLIENT_ERROR_MSG} ; \ |
| 71 | + ${ECHOWARN} " RUN: make install_vnc" ; \ |
| 72 | + fi ; \ |
| 73 | + fi |
| 74 | + |
| 75 | +check_vncviewer: |
| 76 | + @if ! eval ${VNC_CHECK_CMD}; then \ |
| 77 | + ${ECHOERR} ${VNC_CLIENT_ERROR_MSG} ; \ |
| 78 | + exit 4; \ |
| 79 | + fi |
| 80 | + |
| 81 | +see: check_vncviewer |
| 82 | + ./mk/see.sh & |
| 83 | + |
| 84 | +# Shortcut to VNC into Firefox |
| 85 | +seeff: |
| 86 | + $(MAKE) see browser=firefox |
| 87 | + |
| 88 | +# Shortcut to VNC into Chrome |
| 89 | +seech: |
| 90 | + $(MAKE) see browser=chrome |
| 91 | + |
| 92 | +env: |
| 93 | + env |
| 94 | + |
| 95 | +basic_reqs: docker-compose.yml .env mk mk/wait.sh docker docker-compose |
| 96 | + |
| 97 | +# Gather all requisites |
| 98 | +setup: basic_reqs mk/install_vnc.sh mk/vnc_cask.rb mk/see.sh warn_vncviewer pull |
| 99 | + @echo "Requirements checked." |
| 100 | + |
| 101 | +cleanup: |
| 102 | + docker-compose -f ${COMPOSE_FILE} -p ${COMPOSE_PROJ_NAME} down \ |
| 103 | + --remove-orphans >./mk/compose_down.log 2>&1 |
| 104 | + |
| 105 | +# Alias |
| 106 | +down: cleanup |
| 107 | + |
| 108 | +scale: |
| 109 | + docker-compose -f ${COMPOSE_FILE} -p ${COMPOSE_PROJ_NAME} scale \ |
| 110 | + ${APP_NAME}=1 hub=1 chrome=${chrome} firefox=${firefox} |
| 111 | + $(MAKE) wait chrome=${chrome} firefox=${firefox} |
| 112 | + |
| 113 | +compose: basic_reqs cleanup |
| 114 | + docker-compose -f ${COMPOSE_FILE} -p ${COMPOSE_PROJ_NAME} up -d |
| 115 | + $(MAKE) scale chrome=${chrome} firefox=${firefox} |
| 116 | + |
| 117 | +wait: |
| 118 | + ./mk/wait.sh |
| 119 | + |
| 120 | +# Run self tests |
| 121 | +test: |
| 122 | + docker-compose -f ${COMPOSE_FILE} -p ${COMPOSE_PROJ_NAME} exec \ |
| 123 | + --index 1 hub run_test |
| 124 | + |
| 125 | +# PHONY: Given make doesn't execute a task if there is an existing file |
| 126 | +# with that task name, .PHONY is used to skip that logic listing task names |
| 127 | +.PHONY: \ |
| 128 | + default \ |
| 129 | + docker \ |
| 130 | + docker-compose \ |
| 131 | + pull \ |
| 132 | + setup \ |
| 133 | + basic_reqs \ |
| 134 | + check_vncviewer \ |
| 135 | + warn_vncviewer \ |
| 136 | + vncviewer \ |
| 137 | + vnc \ |
| 138 | + see \ |
| 139 | + install_vnc \ |
| 140 | + scale \ |
| 141 | + seeff \ |
| 142 | + seech \ |
| 143 | + compose \ |
| 144 | + wait \ |
| 145 | + down \ |
| 146 | + cleanup \ |
| 147 | + env \ |
| 148 | + test |
0 commit comments