Интеграция с CI-системой GitHub
Интеграция с CI-системой GitHub (GitHub Actions) позволяет:
- автоматически передавать результаты тестов из workflow GitHub в ТестОпс с помощью allurectl;
- запускать workflow GitHub из интерфейса ТестОпс через запуск джобы ТестОпс;
- синхронизировать статус запуска workflow сразу в обеих системах — ТестОпс и GitHub.
В настроенной интеграции одна джоба ТестОпс соответствует одному workflow GitHub, а один запуск джобы — одному запуску соответствующего workflow.
Поддерживаются как основной сервер GitHub (github.com), так и инстансы GitHub Enterprise Server.
Примечание
Чтобы настроить или удалить любую интеграцию ТестОпс с внешней системой, необходима глобальная роль «Администратор» в инстансе ТестОпс и, как правило, права администратора инстанса внешней системы.
Настройка интеграции
Чтобы настроить интеграцию с CI-системой GitHub:
Настройте связь от ТестОпс к GitHub:
- Создайте токен в GitHub.
- Подключите интеграцию с GitHub на уровне инстанса ТестОпс.
- Добавьте настроенное подключение к GitHub в проект ТестОпс.
Настройте связь от GitHub к ТестОпс:
- Создайте API-токен в ТестОпс.
- Укажите созданный API-токен из ТестОпс в GitHub.
- Измените workflow в GitHub.
- Запустите и проверьте workflow в GitHub.
- Настройте созданную джобу в ТестОпс.
Параметризируйте джобу в ТестОпс и workflow в GitHub (при необходимости).
1. Настройте связь от ТестОпс к GitHub
1.1. Создайте токен в GitHub
GitHub поддерживает два типа токенов доступа: fine-grained и classic (см. Managing your personal access tokens в документации GitHub). Для интеграции с ТестОпс вы можете использовать любой тип токена.
Перейдите в ваш инстанс GitHub.
Нажмите на ваш аватар и перейдите в раздел Settings.
В сайдбаре слева перейдите в раздел Developer settings.
В сайдбаре слева перейдите в раздел Personal access tokens → Fine-grained tokens.
Нажмите Generate new token.
Заполните поля:
- Token name — введите название токена, которое поможет вам распознать интеграцию (например, Токен для ТестОпс).
- Expiration — введите срок действия токена. После указанной даты интеграция перестанет работать. Чтобы возобновить ее работу, вам нужно будет создать новый токен.
В секции Repository access выберите один из вариантов:
- All repositories — предоставить токену доступ ко всем репозиториям. Этот вариант подходит, если вы планируете настроить интеграцию для всего инстанса GitHub.
- Only select repositories — предоставить токену доступ только к определенным репозиториям. В появившемся выпадающем списке выберите репозитории, содержащие workflow, которые вы планируете использовать.
В секции Permissions нажмите + Add permissions.
В списке доступных разрешений поставьте галочку напротив Actions.
Чтобы закрыть список, нажмите вне его области.
В списке добавленных разрешений напротив Actions выберите уровень доступа Access: Read and write.
Нажмите Generate token.
В открывшемся окне подтверждения повторно нажмите Generate token.
После обновления страницы вы должны увидеть созданный токен.
Нажмите иконку Копировать рядом с токеном, чтобы скопировать его в буфер обмена.
Cохраните токен в безопасном месте, он понадобится для подключения интеграции с GitHub в ТестОпс.
1.2. Подключите интеграцию с GitHub на уровне инстанса ТестОпс
Перейдите в ваш инстанс ТестОпс.
Перейдите в раздел Администрирование → Интеграции.
Нажмите Добавить интеграцию.
В списке доступных интеграций выберите GitHub.
Заполните поля:
Название подключения — введите название, которое поможет вам распознать интеграцию (например, GitHub production).
Endpoint — введите базовый URL-адрес GitHub:
- Для github.com используйте https://github.com.
- Для GitHub Enterprise Server используйте URL-адрес вашего инстанса GitHub.
Endpoint для вызовов API — введите URL-адрес GitHub API:
- Для github.com убедитесь, что указано https://api.github.com.
- Для GitHub Enterprise Server используйте ⟨URL-адрес вашего инстанса GitHub⟩/api/v3.
Тип учетных данных — нажмите на выпадающий список и выберите тип учетных данных GitHub, который будет поддерживать интеграция:
- Все (глобальные и проектные) — интеграция может работать как с глобальными, так и с проектными учетными данными;
- Только глобальные — интеграция может работать только с глобальными учетными данными;
- Только проектные — интеграция может работать только с проектными учетными данными.
Примечание
Подробнее о поддерживаемых типах учетных данных см. Интеграции с внешними системами → Глобальные и проектные учетные данные
Если вы используете GitHub Enterprise Server с самоподписанным SSL-сертификатом, уберите галочку напротив Проверка SSL-сертификата.
Если интеграция может работать с глобальными учетными данными GitHub, в секции Глобальные учетные данные введите токен доступа GitHub, который вы сохранили на шаге 1.1.
Нажмите Добавить подключение.
1.3. Добавьте настроенное подключение к GitHub в проект ТестОпс
Чтобы добавить настроенное подключение к GitHub в нужный проект ТестОпс, воспользуйтесь одним из способов:
В ТестОпс перейдите в раздел Администрирование → Интеграции.
В списке настроенных интеграций найдите и откройте интеграцию с GitHub.
В списке настроенных подключений найдите и откройте ваше подключение к GitHub.
Нажмите Добавить в проект.
В списке доступных проектов выберите нужный проект ТестОпс.
Если интеграция может работать и с глобальными, и с проектными учетными данными GitHub, в поле Тип учетных данных нажмите на выпадающий список и выберите вариант, который будет использоваться в проекте:
- Проектные — использовать проектные учетные данные для подключения к GitHub;
- Глобальные — использовать глобальные учетные данные для подключения к GitHub.
Если интеграция будет работать с проектными учетными данными GitHub, в секции Проектные учетные данные введите токен доступа GitHub, который вы сохранили на шаге 1.1.
Нажмите Добавить в проект.
2. Настройте связь от GitHub к ТестОпс
Выполните шаги ниже, чтобы настроить вторую часть двусторонней связи: отправку статусов workflow и результатов тестов из GitHub в ТестОпс.
2.1. Создайте токен в ТестОпс
В ТестОпс нажмите на ваш аватар и перейдите в раздел API-токены.
Нажмите + Токен.
Введите название токена, которое поможет вам распознать интеграцию (например, Токен для GitHub).
Нажмите Создать.
ТестОпс сгенерирует токен и отобразит его в модальном окне.
Нажмите иконку Копировать, чтобы скопировать токен в буфер обмена.
Cохраните токен в безопасном месте, он понадобится для настройки интеграции в GitHub.
Нажмите Готово.
2.2. Укажите токен в GitHub
Перейдите в ваш инстанс GitHub.
Откройте репозиторий, для которого вы настраиваете интеграцию.
Перейдите на вкладку Settings.
В сайдбаре слева перейдите в раздел Secrets and variables → Actions.
Нажмите New repository secret.
Заполните поля:
- Name — введите ALLURE_TOKEN.
- Secret — введите API-токен, который вы сохранили на шаге 2.1.
Нажмите Add secret.
2.3. Измените workflow в GitHub
Примечание
Измените каждый workflow, который запускает тесты и участвует в интеграции.
В GitHub откройте репозиторий, для которого вы настраиваете интеграцию.
Перейдите в директорию .github/workflows.
Откройте файл вашего workflow в формате YAML.
В блоке
workflow_dispatch→inputsдобавьте параметры:ALLURE_JOB_RUN_ID,ALLURE_USERNAME.
Важно
Для обоих параметров укажите свойство
requiredсо значением false. Это означает, что параметры можно оставить пустыми при запуске workflow в GitHub, но они должны быть обязательно определены. Без этих параметров запуск workflow со стороны ТестОпс не будет работать и вы получите ошибку 422. Подробнее см. Устранение неполадок.Добавьте или расширьте блок
env. Он должен включать переменные со значениями:ALLURE_ENDPOINT— URL-адрес инстанса ТестОпс.ALLURE_PROJECT_ID— ID проекта ТестОпс.ALLURE_TOKEN— ${{ secrets.ALLURE_TOKEN }}.ALLURE_JOB_RUN_ID— ${{ github.event.inputs.ALLURE_JOB_RUN_ID }}.ALLURE_RESULTS— путь к директории с результатами тестов (например, build/allure-results).Если в вашем репозитории несколько директорий с результатами тестов, вы можете разделить их запятыми или использовать шаблон с подстановочными символами (например, modules/*/build/allure-results).
Перед командой запуска тестов добавьте шаг, загружающий allurectl.
Совет
Рекомендуем использовать готовый GitHub Action allure-framework/setup-allurectl@v1.
Вариант загрузки и настройки allurectl без использования GitHub Action описан в примерах ниже.
Оберните команду, которая запускает тесты, в команду
allurectl watch.Если ваш инстанс ТестОпс использует самоподписанный SSL-сертификат, используйте вместо этого команду
allurectl --insecure watch.
Пример изменения workflow
Предположим, вы работаете с Java-проектом, в котором файл workflow выглядит следующим образом:
yaml
name: Run tests
on:
push:
jobs:
all-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up JDK
uses: actions/setup-java@v3
with:
distribution: oracle
java-version: 17
- name: Build with Gradle
run: ./gradlew clean testЧтобы настроить интеграцию с ТестОпс, вам необходимо изменить файл по примеру ниже:
yaml
name: Run tests
on:
push:
workflow_dispatch:
inputs:
ALLURE_JOB_RUN_ID:
description: "TestOps service parameter. Leave blank"
required: false
ALLURE_USERNAME:
description: "TestOps service parameter. Leave blank"
required: false
env:
ALLURE_ENDPOINT: https://testops.example.com
ALLURE_PROJECT_ID: 1
ALLURE_TOKEN: ${{ secrets.ALLURE_TOKEN }}
ALLURE_JOB_RUN_ID: ${{ github.event.inputs.ALLURE_JOB_RUN_ID }}
ALLURE_RESULTS: "build/allure-results"
jobs:
all-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up JDK
uses: actions/setup-java@v3
with:
distribution: oracle
java-version: 17
- name: Install allurectl
uses: allure-framework/setup-allurectl@v1
- name: Build with Gradle
run: allurectl watch -- ./gradlew clean test2.4. Запустите и проверьте workflow в GitHub
В GitHub откройте репозиторий, для которого вы настраиваете интеграцию.
Перейдите к запуску workflow, инициированному последним коммитом.
Примечание
Если у вас отключен автоматический запуск workflow после коммитов, выполните запуск вручную.
Дождитесь, когда завершится выполнение workflow.
В деталях выполнения workflow нажмите на джобу, которая запускает тесты.
Ближе к концу лога найдите ссылку на запуск в ТестОпс.

Перейдите по ссылке в ТестОпс и откройте результаты одного из тестов.
В карточке результата теста в левом нижнем углу найдите ссылку на workflow GitHub.

Перейдите по ссылке в GitHub, чтобы убедиться, что она работает корректно.
2.5. Настройте джобу в ТестОпс
Перейдите в ваш проект ТестОпс.
Перейдите в раздел Джобы.
В списке будет отображаться новая джоба, автоматически добавленная во время запуска на шаге 2.4.
Напротив добавленной джобы нажмите
⋯→ Настроить.В появившемся окне заполните поля:
- Название — введите название, которое поможет вам распознать джобу.
- Сервер сборки — нажмите на выпадающий список и выберите название подключения к GitHub, которое вы добавили на шаге 1.2.
- Джоба может быть использована для запуска тестов — поставьте галочку, чтобы пользователи могли запускать джобу из ТестОпс.
Нажмите Отправить.
3. Параметризируйте джобу в ТестОпс и workflow в GitHub
GitHub использует блок inputs в файле в формате YAML для передачи параметров в контекст workflow. Чтобы параметризировать workflow, необходимо добавить нужные параметры в этот блок и затем указать их в блоке env. Это позволит использовать указанные параметры как переменные окружения в тестах.
ТестОпс поддерживает эту функциональность через концепцию Окружение, которая позволяет задавать параметры для новых джоб и просматривать параметры из workflow, запущенных со стороны GitHub. В ТестОпс передается весь контекст workflow, который может использоваться для связывания данных окружения с результатами тестов.
3.1. Укажите параметры в workflow GitHub
Примечание
Измените каждый workflow, который запускает тесты и участвует в интеграции.
В GitHub откройте репозиторий, для которого вы настраиваете интеграцию.
Перейдите в директорию .github/workflows.
Откройте файл вашего workflow в формате YAML.
Добавьте параметры для запуска workflow, их описания и значения по умолчанию в блок
inputs.Пример
yamlname: Run tests on: workflow_dispatch: inputs: <...> TESTS_BROWSER: description: "Browser to use for tests" required: true default: "chrome" PRODUCT_VERSION: description: "Product version" required: true default: "1.23"Укажите эти же значения в блоке
envдля передачи информации в ваши тесты через переменные окружения.Пример
yamlenv: <...> TESTS_BROWSER: ${{ github.event.inputs.TESTS_BROWSER }} PRODUCT_VERSION: ${{ github.event.inputs.PRODUCT_VERSION }}
Эти переменные окружения, как и остальные, будут отправлены в ТестОпс с помощью allurectl вместе с контекстом сборки.
3.2. Добавьте глобальные переменные окружения в ТестОпс
Перед тем как использовать значения переменных окружения из workflow GitHub, создайте глобальные переменные окружения на уровне инстанса ТестОпс, которые будут хранить эти данные:
Перейдите в ваш инстанс ТестОпс.
Перейдите в раздел Администрирование → Окружения.
Для каждой переменной, которую вы хотите добавить:
- Нажмите + Создать.
- Введите глобальное название переменной.
- Нажмите Отправить.

Важно
Обязательно создайте глобальную переменную окружения Branch, так как она необходима для работы ТестОпс с API GitHub. Без нее запуск workflow из интерфейса ТестОпс будет невозможен.
3.3. Сопоставьте переменные окружения workflow с глобальными переменными окружения в ТестОпс
Перейдите в ваш проект ТестОпс.
Перейдите в раздел Настройки → Окружение.
Для каждой переменной, которую вы хотите использовать:
- Нажмите + Создать, если переменной нет в списке. Если переменная уже существует, напротив ее названия нажмите иконку Редактировать.
- В поле Ключ введите название переменной в GitHub из шага 3.1.
- В поле Переменная окружения нажмите на выпадающий список и выберите глобальное название переменной в ТестОпс из шага 3.2.
- Нажмите Отправить.

3.4. Добавьте параметры в джобу ТестОпс
В ТестОпс перейдите в раздел Джобы.
Напротив джобы, которую вы хотите параметризировать, нажмите
⋯→ Настроить.Для каждой переменной, которую вы хотите добавить, в секции Параметры нажмите Добавить и заполните поля:
Название — введите название переменной в GitHub из шага 3.1.
Значение — введите значение по умолчанию, которое должно использоваться, если не указано другое значение для конкретного запуска.
Примечание
Обратите внимание, что рекомендуется устанавливать одинаковые значения по умолчанию как в ТестОпс, так и в GitHub. В таком случае запуск workflow получит одно и то же окружение независимо от источника запуска.
Подробнее о настройке джобы см. Джобы → Параметры джобы.
Переменная окружения — нажмите на выпадающий список и выберите глобальное название переменной в ТестОпс из шага 3.2.

Нажмите Отправить.
3.5. Запустите workflow через ТестОпс
На предыдущих шагах вы настроили джобу в ТестОпс, указав все параметры, которые нужно передавать в workflow GitHub. Эти параметры будут использоваться при запуске workflow из интерфейса ТестОпс.

Чтобы выполнить тесты в определенном окружении:
Создайте запуск в интерфейсе ТестОпс любым из доступных способов (подробнее см. Запуски → Создание запуска для тестовых прогонов, инициированных из ТестОпс).
В окне создания запуска в секции Окружение нажмите Добавить.
ТестОпс добавит параметры джобы в форму и заполнит их значениями по умолчанию.

При необходимости измените указанные значения параметров.
Если вам нужно запустить workflow несколько раз с разным окружением, создайте новые наборы переменных окружения. В этом случае ТестОпс отправит запрос в GitHub на выполнение нескольких workflow с различными параметрами.
Нажмите Отправить.
Примеры настроенных workflow GitHub
Как упоминалось выше, allurectl можно добавить в workflow двумя способами:
Через GitHub Action allure-framework/setup-allurectl@v1, который:
- Скачает allurectl.
- Создаст параметры на основе контекста workflow или данных, полученных от ТестОпс.
- Настроит параметры, необходимые для загрузки результатов тестов.
Через скрипт внутри workflow (если GitHub Action недоступен или ограничен), который:
- Скачает allurectl.
- Создаст необходимые параметры на основе контекста workflow.
Ниже приведены примеры простых workflow GitHub с использованием GitHub Action allure-framework/setup-allurectl@v1 и скрипта внутри workflow. В них используется pytest и показаны все элементы, необходимые для корректной передачи результатов тестов из GitHub в ТестОпс и запуска workflow из интерфейса ТестОпс.
yaml
name: run-and-upload-to-testops
on:
workflow_dispatch:
inputs:
TESTS_ENDPOINT:
description: "System under test"
required: true
default: https://system.under.test
TESTS_BROWSER:
description: "Browser to be used in tests"
required: true
default: chrome
ALLURE_JOB_RUN_ID:
description: "TestOps service parameter. Leave blank"
required: false
ALLURE_USERNAME:
description: "TestOps service parameter. Leave blank"
required: false
env:
ALLURE_RESULTS: "allure-results"
ALLURE_JOB_RUN_ID: ${{ github.event.inputs.ALLURE_JOB_RUN_ID }}
jobs:
all-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Install dependencies for pytest and allure framework integration
run: |
python -m pip install --upgrade pip
pip install allure-pytest pytest
- name: install and configure allurectl using GH Action
uses: allure-framework/setup-allurectl@v1
with:
allure-endpoint: https://testops.example.com
allure-token: ${{ secrets.ALLURE_TOKEN }}
allure-project-id: 9999
- name: Run pytest tests
run: |
allurectl watch -- pytest ./test --alluredir=${ALLURE_RESULTS} --capture=no || true
env:
TESTS_ENDPOINT: ${{ github.event.inputs.TESTS_ENDPOINT }}
TESTS_BROWSER: ${{ github.event.inputs.TESTS_BROWSER }}
GITHUB_TESTS_BRANCH: ${{ github.ref_name }}Удаление интеграции
Вы можете удалить интеграцию с GitHub двумя способами — на уровне всего инстанса ТестОпс (через раздел Администрирование) или на уровне отдельного проекта (через настройки проекта).
Важно
Последствия удаления интеграции:
Удаление на уровне инстанса — связь с инстансом GitHub будет удалена из всех джоб ТестОпс, которые относятся к интеграции:
- Иконки для запуска и обновления этих джоб в разделе Джобы станут неактивными.
- Результаты запусков тестов из GitHub не будут отправляться в инстанс ТестОпс.
Удаление на уровне проекта — связь с инстансом GitHub будет удалена из джобы ТестОпс, которая относится к интеграции и находится в этом проекте:
- Иконки для запуска и обновления этой джобы в разделе Джобы останутся активными.
- ТестОпс не сможет запустить тесты из проекта на стороне GitHub. После закрытия запуска результаты этих тестов получат статус «Неизвестный».
- Результаты запусков тестов из GitHub не будут отправляться в проект ТестОпс.
Во время удаления интеграции с CI-системой GitHub также будет удалена интеграция с таск-трекером GitHub. Подробнее о последствиях см. Интеграция с таск-трекером GitHub → Удаление интеграции.
В ТестОпс перейдите в раздел Администрирование → Интеграции.
В списке настроенных интеграций найдите и откройте интеграцию с GitHub.
В списке настроенных подключений найдите ваше подключение к GitHub и убедитесь, что оно не используется в проектах ТестОпс.
Если интеграция подключена к проектам, удалите ее из них. Для этого откройте карточку подключения к GitHub и напротив названия каждого проекта нажмите
⋯→ Удалить из проекта → Да, удалить.Напротив нужного подключения к GitHub нажмите
⋯→ Удалить → Да, удалить.
Устранение неполадок
Ошибка 422 при запуске workflow GitHub через интерфейс ТестОпс
Обычно ошибка 422 возникает при попытке запустить GitHub workflow, использующий workflow_dispatch, если параметры, определенные в блоке workflow_dispatch → inputs, не совпадают с параметрами, передаваемыми из джобы ТестОпс.
Как упоминалось выше, чтобы ТестОпс мог запускать workflow GitHub, в блоке inputs должны быть указаны два обязательных параметра:
ALLURE_JOB_RUN_ID,ALLURE_USERNAME.
Оба параметра должны иметь свойство required со значением false. На стороне ТестОпс эти параметры устанавливаются автоматически, без участия пользователя, поэтому их не нужно указывать в параметрах джобы ТестОпс.
Если логика вашего workflow GitHub требует дополнительных обязательных данных (например, название браузера или название системы для тестирования), эти параметры должны быть настроены в ТестОпс как параметры конфигурации джобы.
Пример конфигурации workflow с обязательными параметрами
Предположим, вы работаете с Java-проектом, в котором файл workflow выглядит следующим образом:
yaml
name: Integration of TestOps with GitHub
on:
workflow_dispatch:
inputs:
ALLURE_JOB_RUN_ID:
description: "TestOps service parameter. Leave blank."
required: false
ALLURE_USERNAME:
description: "TestOps service parameter. Leave blank"
required: false
TEST_BROWSER:
description: "Browser for tests"
required: true
default: chrome
TEST_ENDPOINT:
description: "System under test"
required: false
default: https://staging.system.under.testВ этом случае в ТестОпс в настройках джобы должны быть указаны два обязательных параметра:
- TEST_BROWSER — обязателен, так как в
workflow_dispatchопределен свойствомrequiredсо значением true. - Branch — обязателен, несмотря на то, что не указан явно в блоке
inputs. Этот параметр связан с переменной окружения Branch в GitHub (в обоих случаях используется заглавная буква B), а его значение требуется для работы API GitHub (используется в параметреref).
Параметр TEST_ENDPOINT в настройках джобы ТестОпс может быть добавлен опционально, так как в workflow_dispatch определен свойством required со значением false.
Примеры поведения GitHub при попытке запустить настроенную джобу:
| Результат запуска | Конфигурация джобы в ТестОпс |
|---|---|
| Будет работать корректно. Все параметры присутствуют в workflow_dispatch → inputs | ![]() |
| Будет работать корректно. Присутствует параметр TEST_BROWSER, обязательный в workflow_dispatch → inputs | ![]() |
| Не будет работать, ошибка 422. Параметр RELEASE_ID отсутствует в workflow_dispatch → inputs | ![]() |
| Не будет работать, ошибка 422. Отсутствует параметр TEST_BROWSER, обязательный в workflow_dispatch → inputs | ![]() |
Чтобы исправить ошибку 422, синхронизируйте параметры джобы ТестОпс с параметрами workflow GitHub, указанными в workflow_dispatch → inputs.





