Контейнеры второго этапа
Эти контейнеры запускаются динамически на основе входных данных конфигурации Build User (Job), передаваемых в CLI purpleteam, а именно количества определённых вами testSession.
Следующие конфигурации актуальны, если вы собираетесь запускать серверную часть purpleteam в среде local. В среде cloud всё делается за вас.
Клонируйте этот репозиторий.
Мы используем файл .env непосредственно в каталоге app-slave для тестирования.
ZAP_API_KEY
Убедитесь, что вы присвоили значение переменной окружения ZAP_API_KEY.
ZAP_API_KEY может быть любым, просто убедитесь, что, помимо определения его для app-slave, вы также добавили его в конфигурацию проекта app-scanner. Проекту app-scanner требуется настроенный ZAP API Key для аутентификации в Zap, работающем в контейнере второго этапа. Для проекта app-scanner это необходимо указать в следующем:
{ "slave": { "apiKey": <zap-api-key-here> } }
HOST_ZAP_LOG4J_PROPERTIES_PATH и ZAP_LOG4J_PROPERTIES_PATH_MOUNT_TARGET
Если вам потребуются отладочные логи Zap, вам также нужно будет добавить переменные окружения для конфигурации отладки LOG4J.
Файл .env
Если вы решите использовать файл .env, добавление всех этих переменных окружения будет выглядеть примерно так:
ZAP_API_KEY=<zap-api-key-here>
HOST_ZAP_LOG4J_PROPERTIES_PATH=<absolute-path-to/purpleteam-s2-containers/app-slave/log4j.properties>
ZAP_LOG4J_PROPERTIES_PATH_MOUNT_TARGET=/home/zap/.ZAP/log4j.properties
При условии, что вы задали переменные окружения, обсуждавшиеся выше:
Чтобы включить отладку логирования для контейнеров app-slave (Zap), работающих в среде local, раскомментируйте массив volumes и элемент, содержащий ключ source с переменной окружения HOST_ZAP_LOG4J_PROPERTIES_PATH.
Подробнее ниже о фактическом просмотре логов.
Вы можете взаимодействовать с Zap (запрашивать UI Zap) во время выполнения тестов. Раньше это было полезно для проверки состояния Zap при отладке app-scanner.
docker stats
docker container ls
Это может быть любой порт от 8080 до 8091 включительно, как определено в docker-compose.yml.
zap:8080/*
http://zap:8080/zap в контейнере, указанном портом хоста в вашей конфигурации FoxyProxyЧтобы включить отладку логирования для контейнеров Selenium, работающих в среде local, раскомментируйте массив environment и элемент SE_OPTS=-debug для chrome и/или firefox.
Подробнее ниже о фактическом просмотре логов.
Ниже описано, что необходимо сделать, чтобы просмотреть браузер внутри любого из контейнеров Selenium, запущенных из этого проекта.
-debug. Образы с -debug могут быть закомментированы, поэтому достаточно закомментировать обычный образ и раскомментировать образ с добавлением -debug в конце5900. Задав диапазон в качестве внешнего порта (например: 5900-5901), вы сможете одновременно подключаться по VNC к нескольким контейнерам. В примере мы разрешили одновременное открытие двух сессий. Если вам нужно подключиться более чем к двум, просто расширьте диапазон внешних портовВам понадобится VNC-клиент для подключения к VNC-серверу внутри контейнера. У нас успешно работал Remmina Remote Desktop Client на Linux Mint. Установите Remmina-plugin-vnc через Менеджер программ
Запустите ваш Remmina Remote Desktop Client
Создайте новые записи. Если вы планируете одновременно подключаться по VNC к нескольким контейнерам Selenium, можно настроить каждую из них, как показано ниже:
| Ключ | Значение |
|---|---|
| Имя | seleniumstandalone_chrome_1 |
| Протокол | VNC - Virtual Network Computing |
| На вкладке Basic | |
| Сервер | 127.0.0.1:5900 |
| Пароль | secret |
| Глубина цвета | True color (24 bit) # Это единственное, что сработало для нас |
| Качество | Poor (fastest) |
| Ключ | Значение |
|---|---|
| Имя | seleniumstandalone_chrome_2 |
| Протокол | VNC - Virtual Network Computing |
| На вкладке Basic | |
| Сервер | 127.0.0.1:5901 |
| Пароль | secret |
| Глубина цвета | True color (24 bit) # Это единственное, что сработало для нас |
| Качество | Poor (fastest) |
Дополнительные сведения на GitHub SeleniumHQ
После запуска контейнеров Selenium (удобно держать docker stats запущенным в терминале для просмотра этого) вы можете подтвердить, какой контейнер Selenium использует какой внешний порт, с помощью docker container ls, так как Docker не знает, какие порты вы назначили какой записи VNC-клиента, поэтому имя данной записи VNC-клиента может не совпадать с именем контейнера Selenium. По этой причине рекомендуется проверять привязку портов с помощью docker container ls.
Чтобы сопоставить, какой контейнер Selenium используется для какого тестового сеанса, когда у вас несколько тестовых сеансов, вам может потребоваться просмотреть выполняемый лог app-scanner. Возможно, вам также потребуется убедиться, что app-scanner настроен на уровень логирования debug, чтобы увидеть некоторые или все следующие сообщения лога:
[app.parallel] cucCli process with PID "28" has been spawned for test session with Id "lowPrivUser"
[app.parallel] cucCli process with PID "34" has been spawned for test session with Id "adminUser"
[pid-28,world] seleniumContainerName is: seleniumstandalone_chrome_1
[pid-34,world] seleniumContainerName is: seleniumstandalone_chrome_2