Перейти к основному содержимому

Интеграция с CircleCI

Эта страница описывает, как настроить интеграцию ТестОпс с CircleCI в проекте, который использует CircleCI для запуска тестов.

Как и все другие интеграции CI для ТестОпс, это включает двустороннюю связь:

  • Джоба в пайплайне CircleCI использует allurectl, чтобы отправить свой статус и результаты тестов в ТестОпс.
  • ТестОпс использует API CircleCI для запуска новых пайплайнов, при необходимости передавая тест-план.

После остановки пайплайна соответствующий запуск в ТестОпс может быть закрыт вручную или автоматически в соответствии с настройками автоматического закрытия.

Чтобы добавить поддержку ТестОпс в ваш пайплайн CircleCI:

  1. Включите отправку данных из CircleCI.
  2. Включите запуск пайплайна CircleCI.
  3. Параметризуйте джобы (если необходимо).

1. Включите отправку данных из CircleCI

Чтобы CircleCI отправлял статусы выполнения и результаты тестов в ТестОпс, вам нужно создать токен аутентификации в ТестОпс, добавить токен в CircleCI и изменить саму джобу.

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

1.1. Создайте токен в ТестОпс

  1. В ТестОпс нажмите на ваш аватар и перейдите в Ваш профиль.
  2. В разделе API-токены нажмите + Токен.
  3. Введите Название токена (например, «Токен для CircleCI»), затем нажмите Отправить.
  4. В появившемся окне нажмите значок Копировать, чтобы скопировать токен в буфер обмена. Этот токен понадобится вам на следующем шаге.

1.2. Укажите токен в CircleCI

  1. В CircleCI откройте страницу проекта и нажмите Project Settings в правом верхнем углу.

  2. В меню слева нажмите Environment Variables.

  3. Нажмите Add Environment Variable.

  4. В появившемся окне заполните поля:

    • NameALLURE_TOKEN.
    • Value — API-токен, который вы получили на шаге 1.1.
  5. Нажмите Add Environment Variable, чтобы сохранить настройки и закрыть окно.

1.3. Измените джобу

Чтобы внести изменения в пайплайн, внесите следующие изменения в файл .circleci/config.yml в вашем репозитории.

  1. Убедитесь, что параметр version имеет значение 2.1.

  2. Добавьте или расширьте блок parameters. Он должен включать два необязательных строковых параметра: ALLURE_JOB_RUN_ID и ALLURE_USERNAME.

  3. Для каждой джобы, которая запускает тесты:

    1. В steps добавьте первый шаг, который загружает инструмент allurectl и делает его исполняемым.

      В приведенном ниже примере мы используем curl для загрузки файла. Если curl не включен в образ Docker, который вы используете для джобы, используйте wget или аналогичный инструмент.

      Вы также можете создать и использовать собственный образ Docker с allurectl.

    2. Добавьте или расширьте блок environment. Он должен включать следующие переменные:

      • ALLURE_ENDPOINT — URL-адрес сервера ТестОпс.
      • ALLURE_PROJECT_ID — ID проекта ТестОпс.
      • ALLURE_RESULTS — путь к директории с результатами тестов, например, build/allure-results. Если в вашем проекте несколько директорий с результатами тестов, вы можете разделить их запятыми или использовать шаблон с подстановочными символами, например, modules/*/build/allure-results.
      • ALLURE_JOB_RUN_ID<< pipeline.parameters.ALLURE_JOB_RUN_ID >>.
      • ALLURE_USERNAME<< pipeline.parameters.ALLURE_USERNAME >>.
    3. Оберните команду, которая запускает тесты, в команду ./allurectl watch.

К сведению

Пример

Предположим, у нас есть проект на Java с файлом .circleci/config.yml такого вида:

version: 2.1
workflows:
test:
jobs:
- test
jobs:
test:
docker:
- image: cimg/openjdk:17.0
working_directory: ~/repo
steps:
- checkout
- run:
name: Run tests
command: gradle clean test

С интеграцией ТестОпс файл будет выглядеть примерно так:

version: 2.1
workflows:
test:
jobs:
- test
parameters:
ALLURE_JOB_RUN_ID:
type: string
default: ""
ALLURE_USERNAME:
type: string
default: ""
jobs:
test:
docker:
- image: cimg/openjdk:17.0
working_directory: ~/repo
environment:
ALLURE_ENDPOINT: https://demo.testops.cloud
ALLURE_PROJECT_ID: 1
ALLURE_RESULTS: build/allure-results
ALLURE_JOB_RUN_ID: << pipeline.parameters.ALLURE_JOB_RUN_ID >>
ALLURE_USERNAME: << pipeline.parameters.ALLURE_USERNAME >>
steps:
- checkout
- run:
name: Download allurectl
command: curl -fsSL https://github.com/allure-framework/allurectl/releases/latest/download/allurectl_linux_amd64 -o allurectl && chmod +x allurectl
- run:
name: Run tests
command: ./allurectl --insecure watch -- gradle clean test

1.4. Запустите и проверьте пайплайн

  1. В CircleCI откройте проект и перейдите к пайплайну, запущенному последним коммитом.

  2. Если пайплайн еще не завершен, дождитесь его завершения.

  3. В деталях пайплайна нажмите на шаг, который запускает тесты.

    Ближе к концу его лога должна быть ссылка на отчет о тестировании в ТестОпс. Убедитесь, что она присутствует и работает.

    Ссылка на запуск находится в логах выполнения пайплайна.

  4. В запуске в ТестОпс откройте результаты одного теста.

    Внизу страницы должна быть ссылка на джобу CircleCI. Убедитесь, что она присутствует и работает.

    Ссылка на пайплайн CircleCI находится внизу панели с результатами тестов.

2. Включите запуск пайплайнов CircleCI

Интеграция с CircleCI должна быть настроена на двух уровнях.

Сначала администратор должен указать URL-адрес сервера CircleCI.

Затем владелец проекта должен создать токен аутентификации в CircleCI, добавить его в ТестОпс и настроить джобу в ТестОпс.

2.1. Укажите сервер CircleCI в ТестОпс

  1. Войдите в ТестОпс, используя учетную запись администратора.

  2. Перейдите в раздел АдминистрированиеИнтеграции.

  3. Нажмите + Добавить интеграцию в правом верхнем углу экрана.

  4. В появившемся окне выберите CircleCI.

  5. Заполните поля:

    • Название — название, которое поможет вам распознать сервер CircleCI, например, CircleCI production.
    • Endpoint — URL-адрес сервера CircleCI, например, https://circleci.com/.
  6. Если ваш сервер CircleCI использует самоподписанный SSL-сертификат, поставьте галочку Disable certificate validation.

  7. Нажмите Добавить интеграцию.

2.2. Создайте токен в CircleCI

  1. В CircleCI нажмите на ваш аватар в левом нижнем углу.

  2. В меню слева нажмите Personal API Tokens.

  3. Нажмите Create New Token.

  4. В появившемся окне введите название токена в поле Token Name, чтобы помочь вам распознать токен, например, «Токен для ТестОпс».

  5. Нажмите Add API Token.

    Сгенерированный токен появится в окне. Нажмите кнопку Copy, чтобы скопировать его.

    Этот токен понадобится вам на следующем шаге.

2.3. Добавьте токен в проект ТестОпс

  1. Откройте ваш проект в ТестОпс.

  2. Перейдите в раздел НастройкиИнтеграции.

  3. В разделе Доступные интеграции найдите интеграцию CircleCI и нажмите Добавить интеграцию рядом с ней.

  4. В появившемся окне укажите Токен, который вы получили на шаге 1.2.

    Совет

    Проверьте правильность учетных данных

    Нажмите Проверить соединение. Через несколько секунд должно появиться сообщение «Соединение установлено».

  5. Нажмите Добавить интеграцию, чтобы сохранить настройки и закрыть окно.

2.4. Настройте джобу в ТестОпс

  1. Откройте ваш проект в ТестОпс.

  2. Перейдите в раздел Джобы.

    На странице должна быть новая джоба, автоматически добавленная и настроенная во время запуска на шаге 1.4.

  3. Нажмите напротив джобы, затем выберите Настроить.

  4. В появившемся окне отредактируйте поля:

    • Название — название, которое поможет вам распознать джобу.
    • Сервер сборки — название интеграции, которую вы добавили на шаге 2.1.
    • Джоба может быть использована для запуска тестов — если установлено, пользователи смогут запускать эту джобу из ТестОпс.
    • Параметры — параметры, которые должны быть переданы в CircleCI через переменные окружения, см. Окружение.

    Окно позволяет настроить параметры джобы.

  5. Нажмите Отправить.

3. Параметризуйте джобы

Пайплайны CircleCI могут принимать параметры, которые передаются командам. ТестОпс интегрирует эту функцию с собственной концепцией Окружения, что позволяет вам как задавать параметры для новых джоб, так и видеть параметры, установленные для джоб, запущенных вне ТестОпс.

В CircleCI владельцу проекта нужно добавить переменные и их значения по умолчанию.

В ТестОпс администратору нужно объявить требуемые названия для параметров глобально, затем владельцу проекта нужно настроить маппинг параметров в настройках проекта и в настройках джобы.

Важно

Если в репозитории вашего проекта есть несколько веток, обязательно создайте переменную окружения Branch в ТестОпс и передайте ее в свою джобу. Это специальное имя укажет CircleCI, какую из веток нужно использовать.

3.1. Установите значения по умолчанию в CircleCI

Чтобы внести изменения в пайплайн, отредактируйте .circleci/config.yml в вашем репозитории.

  1. В глобальном блоке parameters объявите параметры и их значения по умолчанию.
  2. В блоке environment оберните параметры в переменные окружения, чтобы инструмент allurectl мог получить к ним доступ.

Например:

version: 2.1
workflows:
test:
jobs:
- test
parameters:
ALLURE_JOB_RUN_ID:
type: string
default: ""
ALLURE_USERNAME:
type: string
default: ""
PRODUCT_VERSION:
type: string
default: "1.23"
TESTS_BROWSER:
type: string
default: chrome
jobs:
test:
docker:
- image: cimg/openjdk:17.0
working_directory: ~/repo
environment:
ALLURE_ENDPOINT: https://demo.testops.cloud
ALLURE_PROJECT_ID: 1
ALLURE_RESULTS: build/allure-results
ALLURE_JOB_RUN_ID: << pipeline.parameters.ALLURE_JOB_RUN_ID >>
ALLURE_USERNAME: << pipeline.parameters.ALLURE_USERNAME >>
PRODUCT_VERSION: << pipeline.parameters.PRODUCT_VERSION >>
TESTS_BROWSER: << pipeline.parameters.TESTS_BROWSER >>
steps:
- checkout
- run:
name: Download allurectl
command: curl -fsSL https://github.com/allure-framework/allurectl/releases/latest/download/allurectl_linux_amd64 -o allurectl && chmod +x allurectl
- run:
name: Run tests
command: ./allurectl --insecure watch -- gradle clean test

3.2. Добавьте глобальные названия параметров в ТестОпс

  1. Войдите в ТестОпс, используя учетную запись администратора.

  2. Перейдите в раздел АдминистрированиеОкружения.

  3. Для каждого параметра, который вы хотите добавить, нажмите + Создать, введите название параметра и нажмите Отправить.

    Обратите внимание, что это название может быть человекочитаемым и не обязательно должно совпадать с названием из шага 3.1.

    Названия переменных окружения добавляются в панели администрирования.

3.3. Сопоставьте параметры с переменными окружения в ТестОпс

  1. Откройте ваш проект в ТестОпс.

  2. Перейдите в раздел НастройкиОкружение.

  3. Для каждого параметра, который вы хотите использовать:

    1. Нажмите + Создать, если параметра нет в списке. Если параметр уже существует, нажмите значок Редактировать рядом с его названием.
    2. В поле Ключ укажите название переменной окружения из шага 3.1.
    3. В поле Переменная окружения выберите глобальное название параметра из шага 3.2.
    4. Нажмите Отправить.

    Сопоставление переменных окружения находится в настройках проекта.

3.4. Добавьте параметры в джобу ТестОпс

  1. Откройте ваш проект в ТестОпс.

  2. Перейдите в раздел Джобы.

  3. Найдите джобу, которую хотите параметризовать. Нажмите и выберите Настроить.

    Появится окно настроек джобы, содержащее раздел Параметры.

  4. Для каждого параметра, который вы хотите использовать, нажмите Добавить и заполните поля:

    • Название — название переменной окружения из шага 3.1.
    • Значение — значение по умолчанию, такое же, как default из шага 3.1.
    • Переменная окружения — глобальное название параметра из шага 3.2.

    В окне можно указать несколько переменных окружения.

  5. Нажмите Отправить.