Интеграция с 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 такого вида:
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. Запустите и проверьте пайплайн
-
В 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 мог получить к ним доступ.
Например:
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.
-
Нажмите Отправить.