Интеграция с CircleCI
Эта страница описывает, как настроить интеграцию ТестОпс с CircleCI в проекте, который использует CircleCI для запуска тестов.
Как и все другие интеграции CI для ТестОпс, это включает двустороннюю связь:
- Джоба в пайплайне CircleCI использует allurectl, чтобы отправить свой статус и результаты тестов в ТестОпс.
- ТестОпс использует API CircleCI для запуска новых пайплайнов, при необходимости передавая тест-план.
После остановки пайплайна соответствующий запуск в ТестОпс может быть закрыт вручную или автоматически в соответствии с настройками автоматического закрытия.
Чтобы добавить поддержку ТестОпс в ваш пайплайн CircleCI:
- Включите отправку данных из CircleCI.
- Включите запуск пайплайна CircleCI.
- Параметризуйте джобы (если необходимо).
1. Включите отправку данных из CircleCI
Чтобы CircleCI отправлял статусы пайплайнов и результаты тестов в ТестОпс, вам нужно создать токен аутентификации в ТестОпс, добавить токен в CircleCI и изменить саму джобу.
Затем запустите и проверьте пайплайн, чтобы убедиться, что все работает.
1.1. Создайте токен в ТестОпс
В ТестОпс нажмите на ваш аватар и перейдите в API-токены.
Нажмите + Токен.
Придумайте название для токена (например, «Токен для CircleCI») и нажмите Создать.
ТестОпс сгенерирует токен и отобразит его в модальном окне.
Нажмите значок Копировать, чтобы скопировать токен в буфер обмена. Этот токен понадобится вам на следующем шаге.
1.2. Укажите токен в CircleCI
В CircleCI откройте страницу проекта и нажмите Project Settings в правом верхнем углу.
В меню слева нажмите Environment Variables.
Нажмите Add Environment Variable.
В появившемся окне заполните поля:
- Name — ALLURE_TOKEN.
- Value — API-токен, который вы получили на шаге 1.1.
Нажмите Add Environment Variable, чтобы сохранить настройки.
1.3. Измените джобу
Чтобы внести изменения в пайплайн, внесите следующие изменения в файл .circleci/config.yml в вашем репозитории.
Убедитесь, что параметр
version
имеет значение2.1
.Добавьте или расширьте блок
parameters
. Он должен включать два необязательных строковых параметра:ALLURE_JOB_RUN_ID
иALLURE_USERNAME
.Для каждой джобы, которая запускает тесты:
В
steps
добавьте первый шаг, который загружает инструмент allurectl и делает его исполняемым.В приведенном ниже примере мы используем curl для загрузки файла. Если curl не включен в образ Docker, который вы используете для джобы, используйте wget или аналогичный инструмент.
Вы также можете создать и использовать собственный образ Docker с allurectl.
Добавьте или расширьте блок
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 >>
.
Оберните команду, которая запускает тесты, в команду
./allurectl watch
.
Примечание
Пример
Предположим, у нас есть проект на Java с файлом .circleci/config.yml такого вида:
yaml
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
С интеграцией ТестОпс файл будет выглядеть примерно так:
yaml
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. Запустите и проверьте пайплайн
В CircleCI откройте проект и перейдите к пайплайну, запущенному последним коммитом.
Если пайплайн еще не завершен, дождитесь его завершения.
В деталях пайплайна нажмите на шаг, который запускает тесты.
Ближе к концу его лога должна быть ссылка на отчет о тестировании в ТестОпс. Убедитесь, что она присутствует и работает.
В запуске в ТестОпс откройте результаты одного теста.
Внизу страницы должна быть ссылка на джобу CircleCI. Убедитесь, что она присутствует и работает.
2. Включите запуск пайплайнов CircleCI
Интеграция с CircleCI должна быть настроена на двух уровнях.
Сначала администратор должен указать URL-адрес сервера CircleCI.
Затем владелец проекта должен создать токен аутентификации в CircleCI, добавить его в ТестОпс и настроить джобу в ТестОпс.
2.1. Укажите сервер CircleCI в ТестОпс
Войдите в ТестОпс, используя учетную запись администратора.
Перейдите в раздел Администрирование → Интеграции.
Нажмите + Добавить интеграцию в правом верхнем углу экрана.
В появившемся окне выберите CircleCI.
Заполните поля:
- Название — название, которое поможет вам распознать сервер CircleCI, например, CircleCI production.
- Endpoint — URL-адрес сервера CircleCI, например, https://circleci.com/.
Если ваш сервер CircleCI использует самоподписанный SSL-сертификат, поставьте галочку Disable certificate validation.
Нажмите Добавить интеграцию.
2.2. Создайте токен в CircleCI
В CircleCI нажмите на ваш аватар в левом нижнем углу.
В меню слева нажмите Personal API Tokens.
Нажмите Create New Token.
В появившемся окне введите название токена в поле Token Name, чтобы помочь вам распознать токен, например, «Токен для ТестОпс».
Нажмите Add API Token.
Сгенерированный токен появится в окне. Нажмите кнопку Copy, чтобы скопировать его.
Этот токен понадобится вам на следующем шаге.
2.3. Добавьте токен в проект ТестОпс
- Откройте ваш проект в ТестОпс.
- Перейдите в раздел Настройки → Интеграции.
- В разделе Доступные интеграции найдите интеграцию CircleCI и нажмите Добавить интеграцию рядом с ней.
- В появившемся окне укажите Токен, который вы получили на шаге 1.2.
- Нажмите Проверить соединение. Если токен указан верно, через несколько секунд появится сообщение «Соединение установлено».
- Нажмите Добавить интеграцию, чтобы сохранить настройки.
2.4. Настройте джобу в ТестОпс
Откройте ваш проект в ТестОпс.
Перейдите в раздел Джобы.
На странице должна быть новая джоба, автоматически добавленная и настроенная во время запуска на шаге 1.4.
Нажмите
⋯
напротив джобы, затем выберите Настроить.В появившемся окне отредактируйте поля:
- Название — название, которое поможет вам распознать джобу.
- Сервер сборки — название интеграции, которую вы добавили на шаге 2.1.
- Джоба может быть использована для запуска тестов — если установлено, пользователи смогут запускать эту джобу из ТестОпс.
- Параметры — параметры, которые должны быть переданы в CircleCI через переменные окружения, см. Окружение.
Нажмите Отправить.
3. Параметризуйте джобы
Пайплайны CircleCI могут принимать параметры, которые передаются командам. ТестОпс интегрирует эту функцию с собственной концепцией Окружения, что позволяет вам как задавать параметры для новых джоб, так и видеть параметры, установленные для джоб, запущенных вне ТестОпс.
В CircleCI владельцу проекта нужно добавить переменные и их значения по умолчанию.
В ТестОпс администратору нужно объявить требуемые названия для параметров глобально, затем владельцу проекта нужно настроить маппинг параметров в настройках проекта и в настройках джобы.
Важно
Если в репозитории вашего проекта есть несколько веток, обязательно создайте переменную окружения Branch в ТестОпс и передайте ее в свою джобу. Это специальное имя укажет CircleCI, какую из веток нужно использовать.
3.1. Установите значения по умолчанию в CircleCI
Чтобы внести изменения в пайплайн, отредактируйте .circleci/config.yml в вашем репозитории.
- В глобальном блоке
parameters
объявите параметры и их значения по умолчанию. - В блоке
environment
оберните параметры в переменные окружения, чтобы инструмент allurectl мог получить к ним доступ.
Например:
yaml
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. Добавьте глобальные названия параметров в ТестОпс
Войдите в ТестОпс, используя учетную запись администратора.
Перейдите в раздел Администрирование → Окружения.
Для каждого параметра, который вы хотите добавить, нажмите + Создать, введите название параметра и нажмите Отправить.
Обратите внимание, что это название может быть человекочитаемым и не обязательно должно совпадать с названием из шага 3.1.
3.3. Сопоставьте параметры с переменными окружения в ТестОпс
Откройте ваш проект в ТестОпс.
Перейдите в раздел Настройки → Окружение.
Для каждого параметра, который вы хотите использовать:
- Нажмите + Создать, если параметра нет в списке. Если параметр уже существует, нажмите значок Редактировать рядом с его названием.
- В поле Ключ укажите название переменной окружения из шага 3.1.
- В поле Переменная окружения выберите глобальное название параметра из шага 3.2.
- Нажмите Отправить.
3.4. Добавьте параметры в джобу ТестОпс
Откройте ваш проект в ТестОпс.
Перейдите в раздел Джобы.
Найдите джобу, которую хотите параметризовать. Нажмите
⋯
и выберите Настроить.Появится окно настроек джобы, содержащее раздел Параметры.
Для каждого параметра, который вы хотите использовать, нажмите Добавить и заполните поля:
- Название — название переменной окружения из шага 3.1.
- Значение — значение по умолчанию, такое же, как
default
из шага 3.1. - Переменная окружения — глобальное название параметра из шага 3.2.
Нажмите Отправить.