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

Интеграция с 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 откройте страницу проекта и нажмите Настройки проекта в правом верхнем углу.

  2. В меню слева нажмите Переменные окружения.

  3. Нажмите Добавить переменную окружения.

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

    • Имя — «ALLURE_TOKEN».
    • Значение — API токен, который вы получили на шаге 1.1.
  5. Нажмите Добавить переменную окружения, чтобы закрыть диалог и сохранить настройки.

1.3. Измените задачу

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

  1. Убедитесь, что version установлен на 2.1.

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

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

    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-сертификат, установите флажок Отключить проверку сертификата.

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

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

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

  2. В меню слева нажмите Персональные API токены.

  3. Нажмите Создать новый токен.

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

  5. Нажмите Добавить API токен.

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

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

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. Нажмите Отправить.