Интеграция FAST в проект GitLab CI/CD

Интеграция FAST в режиме CI MODE в рабочий процесс GitLab CI/CD настраивается через конфигурационный файл ~/.gitlab-ci.yml. Более подробная информация о настройке рабочего процесса доступна в официальной документации GitLab CI/CD.

Установка токена FAST-ноды

Для безопасного использования токена FAST-ноды первым шагом определите его как переменную окружения в настройках проекта.

Определение переменной окружения для проекта GitLab CI/CD

Настроенный рабочий процесс

Дальнейшая инструкция предполагает, что у вас уже есть настроенный рабочий процесс, соответствующий одному из свойств:

Добавление этапа записи запросов

Для добавления этапа записи запросов дополните шаг автотестирования приложения следующими настройками:

  1. Добавьте команду запуска FAST-ноды в режиме CI_MODE=recording и с другими переменными перед командой запуска автотестов. Например:

     docker run --name fast -d -e WALLARM_API_TOKEN=$WALLARM_API_TOKEN -e CI_MODE=recording -e WALLARM_API_HOST=us1.api.wallarm.com -e ALLOWED_HOSTS=app-test -p 8080:8080 --network my-network --rm wallarm/fast
    
  2. Настройте проксирование автотестов через FAST-ноду. Например:

     docker run --rm -d --name selenium -e http_proxy='http://fast:8080' --network my-network selenium/standalone-firefox:latest
    

Сеть Docker

Перед записью тестов убедитесь, что FAST-нода и инструмент тестирования запускаются в одной сети Docker.

Пример шага автотестирования приложения с запуском FAST-ноды в режиме записи
test:
  stage: test
  script:
    - docker network create my-network 
    - docker run --name fast -d -e WALLARM_API_TOKEN=$WALLARM_API_TOKEN -e CI_MODE=recording -e WALLARM_API_HOST=us1.api.wallarm.com -p 8080:8080 --network my-network --rm wallarm/fast 
    - docker run --rm -d --name selenium -p 4444:4444 -e http_proxy='http://fast:8080' -e https_proxy='https://fast:8080' --network my-network selenium/standalone-firefox:latest 
    - docker run --rm --name app-test --network my-network -e CAPYBARA_SERVER_HOST=app-test -p 3000:3000 app-test bundle exec rspec spec/features/posts_spec.rb 
    - docker stop selenium fast
    - docker network rm my-network

В приведенном примере выполняются следующие команды:

  1. Создается сеть Docker – my-network.
  2. Запускается FAST-нода в режиме записи в сети my-network.
  3. Запускается инструмент тестирования Selenium в сети my-network с использованием FAST-ноды как прокси.
  4. Запускается тестируемое приложение и автотесты в сети my-network.
  5. Останавливаются инструмент тестирования Selenium и FAST-нода в режиме записи.
  6. Удаляется сеть my-network.

Добавление этапа тестирования безопасности приложения

Для тестирования безопасности приложения настройте соответствующий отдельный шаг в рабочем процессе следующим образом:

  1. Если тестируемое приложение не запущено, добавьте команду запуска приложения.
  2. Добавьте команду запуска FAST-ноды в режиме CI_MODE=testing и с другими необходимыми переменными после команды запуска приложения.

    Использование записанного набора запросов

    Если набор запросов был записан в другом рабочем процессе, при запуске FAST-ноды необходимо указать идентификатор существующей записи в переменной TEST_RECORD_ID.

    Если значение переменной не указано, используется последний набор запросов, записанный FAST-нодой.

    Пример команды:

     docker run --name fast -e WALLARM_API_TOKEN=$WALLARM_API_TOKEN -e CI_MODE=testing -e WALLARM_API_HOST=us1.api.wallarm.com -p 8080:8080 -e TEST_RUN_URI=http://app-test:3000 --network my-network --rm wallarm/fast
    

Сеть Docker

Перед тестированием безопасности убедитесь, что FAST-нода и тестируемое приложение запускаются в одной сети.

Пример шага с тестированием безопасности приложения
  1. Добавление нового шага security_test в список stages:

       stages:
         - build
         - test
         - security_test
         - cleanup
    
  2. Описание тела нового шага security_test:

       security_test:
         stage: security_test
         script:
           - docker network create my-network 
           - docker run --rm -d --name app-test --network my-network -e CAPYBARA_SERVER_HOST=app-test -p 3000:3000 app-test
           - sleep 5 
           - docker run --name fast -e WALLARM_API_TOKEN=$WALLARM_API_TOKEN -e CI_MODE=testing -e WALLARM_API_HOST=us1.api.wallarm.com -p 8080:8080 --network my-network -e TEST_RUN_URI="http://app-test:3000" --rm wallarm/fast 
           - docker stop app-test
    

В приведенном примере выполняются следующие команды:

  1. Создается сеть my-network.
  2. Запускается тестируемое приложение в сети my-network.
  3. Запускается FAST-нода в режиме тестирования в сети my-network. TEST_RECORD_ID не указывается, так как необходимый набор базовых запросов был создан в этом же рабочем процессе и является последним записанным. Остановка FAST-ноды выполнится автоматически после завершения тестирования.
  4. Останавливается тестируемое приложение.

Получение результата тестирования

Результат проведенного тестирования безопасности отображается в интерфейсе GitLab CI/CD.

Результат работы FAST в интерфейсе GitLab CI/CD

Больше примеров

С примерами интеграции FAST в рабочий процесс GitLab CI/CD можно ознакомиться в нашем GitHub и GitLab.

Если у вас возникли вопросы по интеграции FAST в ваш рабочий процесс GitLab CI/CD, обратитесь в службу поддержки Валарм.

Демо‑видео

results matching ""

    No results matching ""