Настройка запуска автотестов в Jenkins CI с помощью вебхука

  • Для этого раздела мы подготовили видео:

Настройка Jenkins

Создание параметров

  1. Войдите в Jenkins.
  2. Перейдите в Settings > General.
  3. Добавьте новые параметры с наименованиями следующих переменных окружения:
    • TEST_RUN_ID
    • PRIVATE_TOKEN
    • URL

Получение токена авторизации

  1. Перейдите в Профиль > Статус.
  2. Скопируйте содержимое поля Jenkins User ID.
  3. Перейдите в Профиль > Настроить.
  4. Скопируйте API Token.
  5. Закодируйте строку JENKINS_USER_ID:API_TOKEN методом Base64. Получившаяся строка — ваш токен авторизации Jenkins.

Настройка вебхука в Test IT

  1. Откройте проект.
  2. В навигационном меню слева нажмите Вебхуки.
  3. Нажмите Создать.
  4. Укажите название вебхука и выберите тип события — Запуск автотестов.
  5. В шаге Состояние выберите статус вебхука Запущен.
  6. В поле URL вставьте строку http://{DOMAIN}/job/{ITEM_NAME}/buildWithParameters, где DOMAIN это адрес вашей системы Jenkins, а ITEM_NAME — наименование Jenkins Item. Убедитесь, что тип передаваемого запроса выставлен как POST.
  7. В шаге Параметры URL установите следующие передаваемые параметры:
    • Ключ: testRunId, Значение: $TEST_RUN_ID.

    • Ключ: testProjectId, Значение: $PROJECT\_ID.

  8. В шаге Заголовки HTTP установите следующий параметр:
    • Ключ: Authorization, Значение: Basic {AUTHORIZATION_TOKEN}, где AUTHORIZATION_TOKEN — это токен авторизации, сгенерированный на этапе настройки Jenkins.
  9. В шаге Тело HTTP в поле Тип запроса выберите Не отправлять контекст.
  10. Нажмите Сохранить.

Проверка интеграции

  1. Запустите автотесты в Jenkins.
  2. Перейдите к логам, нажав Посмотреть журнал.

В логах можно увидеть результирующий запрос и ответ от внешней системы:

Запрос:

Method: POST
RequestUrl: 'http://jenkins.mycompanyname.ru/job/testit-webinar
/buildWithParameters?testRunId=a62172c1-f067-4006-97c0-
e93aa8e8f3b5&testProjectId=301'
Version: 2.0
Content: <null>
Headers: { Authorization: Basic ****** }

Ответ:

StatusCode: 201
ReasonPhrase: 'Created'
Version: 1.1
Content: System.Net.Http.HttpConnection+HttpConnectionResponseContent
Headers:
 {
 Date: Fri, 26 Jul 2019 16:32:34 GMT
 X-Content-Type-Options: nosniff
 Location: http://jenkins.mycompanyname.ru/queue/item/1777974/
 Server: Jetty(9.4.z-SNAPSHOT)
 Content-Length: 0
 }

В Jenkins запустилась сборка проекта с полученными параметрами.