Автоматизация испытаний ZAP & E2E (Cypress) - PullRequest
0 голосов
/ 21 апреля 2020

в итоге мне удалось достичь своей цели с помощью e2e и ZAP (используя Docker).

Итак, я могу видеть результаты из http://localhost: 8091 / ДРУГОЙ / основной / другой / htmlreport или из терминала моего локального р c (используя curl -X GET)

Среда:

  • GitLab Repository с e2e тестами, запущенными с Cypress (linux image)
  • Docker изображение с ZAP (последняя версия)

В данный момент я думаю об использовании ZAP в качестве службы в файле yml. Это означает, что мне также придется обновить файл пакета. json и файл docker, чтобы перевести traffi c сюда из контейнера Cypress и запустить ZAP.

  • Cypress : пересылка трафика c (через прокси) в ZAP (опция HTTP_PROXY = http://containerAlias_port)
  • ZAP Daemon : прослушивание локального хоста для получения данных от e2e (также с использованием привязки порта)

Пример gitlab-ci.yml:

services:
 - name: owasp/zap2docker-stable:latest
   alias: zap
   ports:
       - "8092:8092"
   entrypoint: ["zap.sh", "-daemon", "-port", "8092", "-host", "0.0.0.0", "-config", "api.disablekey=true", "-config", "api.addrs.addr.name=.*", "-config", "api.addrs.addr.regex=true"] 

Проблемы являются:

1) Как получить результаты от Демона в такой среде? Потому что «терминал» с CURL не очень подходит для CI / CD

2) Основная проблема - как получить результаты. Локальное использование терминала не очень «автоматизированное» решение, и я хотел бы иметь возможность сохранить файл отчета (html или json). Я пробовал с базовым сканированием, но у меня большие проблемы с таргетингом на IP-адрес, на котором проводятся тесты. Есть ли другие возможные решения? Может быть, даже с Daemon, чтобы обойти эту проблему?

1 Ответ

1 голос
/ 21 апреля 2020

Подход, упомянутый в документах , работает для меня:

Запустите ZAP как демон, прослушивающий "0.0.0.0":

docker run -p 8090:8090 -i owasp/zap2docker-stable zap.sh -daemon -port 8090 -host 0.0.0.0

Узнайте идентификатор контейнера :

docker ps

Узнайте, какой адрес был ему присвоен:

docker inspect <CONTAINER ID> | grep IPAddress

После этого вы сможете указать браузеру указанный хост / порт и получить доступ к ZAP API, Например, http://172.17.0.8:8090/

Затем я использую следующий URL для просмотра отчета и публикации sh в jenkins с использованием плагина htmlpublisher . Вы также можете использовать curl / wget для загрузки:

http://172.17.0.8:8090/OTHER/core/other/htmlreport/?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...