Интеграция с CI-системой GitLab
Интеграция с CI-системой GitLab позволяет:
- автоматически передавать результаты тестов из пайплайна GitLab в ТестОпс с помощью allurectl;
- запускать пайплайн GitLab из интерфейса ТестОпс через запуск джобы ТестОпс;
- синхронизировать статус запуска пайплайна сразу в обеих системах — ТестОпс и GitLab.
В настроенной интеграции одна джоба ТестОпс соответствует одному пайплайну GitLab, а один запуск джобы — одному запуску соответствующего пайплайна.
Примечание
Чтобы настроить или удалить любую интеграцию ТестОпс с внешней системой, необходима глобальная роль «Администратор» в инстансе ТестОпс и, как правило, права администратора инстанса внешней системы.
Настройка интеграции
Чтобы настроить интеграцию с CI-системой GitLab:
Настройте связь от ТестОпс к GitLab:
- Создайте токен в GitLab.
- Подключите интеграцию с GitLab на уровне инстанса ТестОпс.
- Добавьте настроенное подключение к GitLab в проект ТестОпс.
Настройте связь от GitLab к ТестОпс:
- Создайте API-токен в ТестОпс.
- Укажите созданный API-токен из ТестОпс в GitLab.
- Измените пайплайн в GitLab.
- Запустите и проверьте пайплайн в GitLab.
- Настройте созданную джобу в ТестОпс.
Параметризируйте джобу в ТестОпс и пайплайн в GitLab (при необходимости).
1. Настройте связь от ТестОпс к GitLab
1.1. Создайте токен в GitLab
В GitLab нажмите на ваш аватар и перейдите в раздел Preferences.
В сайдбаре слева перейдите в раздел Access Tokens.
Если форма создания токена не появилась, над списком токенов нажмите Add new token.
Заполните поля:
- Token name — название токена, которое поможет вам распознать интеграцию (например, Токен для ТестОпс).
- Expiration date — срок действия токена. После указанной даты интеграция перестанет работать. Чтобы возобновить ее работу, вам нужно будет создать новый токен.
В секции Select scopes поставьте галочки напротив api и read_api.
Нажмите Create token.
После обновления страницы вы должны увидеть созданный токен.
Нажмите иконку копирования под Your token, чтобы скопировать токен в буфер обмена.
Cохраните токен в безопасном месте, он понадобится для подключения интеграции с GitLab в ТестОпс.
Совет
Вы также можете использовать токен доступа проекта (project access token) вместо личного токена доступа, но в этом случае интеграция будет ограничена одним проектом.
1.2. Подключите интеграцию с GitLab на уровне инстанса ТестОпс
Перейдите в ваш инстанс ТестОпс.
Перейдите в раздел Администрирование → Интеграции.
Нажмите Добавить интеграцию.
В списке доступных интеграций выберите GitLab.
Заполните поля:
Название подключения — введите название, которое поможет вам распознать интеграцию (например, GitLab production).
Endpoint — введите URL-адрес вашего инстанса GitLab (например, https://gitlab.example.com/).
Тип учетных данных — нажмите на выпадающий список и выберите тип учетных данных GitLab, который будет поддерживать интеграция:
- Все (глобальные и проектные) — интеграция может работать как с глобальными, так и с проектными учетными данными;
- Только глобальные — интеграция может работать только с глобальными учетными данными;
- Только проектные — интеграция может работать только с проектными учетными данными.
Примечание
Подробнее о поддерживаемых типах учетных данных см. Интеграции с внешними системами → Глобальные и проектные учетные данные
Если ваш инстанс GitLab использует самоподписанный SSL-сертификат, уберите галочку напротив Проверка SSL-сертификата.
Если интеграция может работать с глобальными учетными данными GitLab, в секции Глобальные учетные данные введите токен доступа GitLab, который вы сохранили на шаге 1.1.
Нажмите Добавить подключение.
1.3. Добавьте настроенное подключение к GitLab в проект ТестОпс
Чтобы добавить настроенное подключение к GitLab в нужный проект ТестОпс, воспользуйтесь одним из способов:
В ТестОпс перейдите в раздел Администрирование → Интеграции.
В списке настроенных интеграций найдите и откройте интеграцию с GitLab.
В списке настроенных подключений найдите и откройте ваше подключение к GitLab.
Нажмите Добавить в проект.
В списке доступных проектов выберите нужный проект ТестОпс.
Если интеграция может работать и с глобальными, и с проектными учетными данными GitLab, в поле Тип учетных данных нажмите на выпадающий список и выберите вариант, который будет использоваться в проекте:
- Проектные — использовать проектные учетные данные для подключения к GitLab;
- Глобальные — использовать глобальные учетные данные для подключения к GitLab.
Если интеграция будет работать с проектными учетными данными GitLab, в секции Проектные учетные данные введите токен доступа GitLab, который вы сохранили на шаге 1.1.
Нажмите Добавить в проект.
2. Настройте связь от GitLab к ТестОпс
Выполните шаги ниже, чтобы настроить вторую часть двусторонней связи: отправку статусов пайплайнов и результатов тестов из GitLab в ТестОпс.
2.1. Создайте токен в ТестОпс
В ТестОпс нажмите на ваш аватар и перейдите в раздел API-токены.
Нажмите + Токен.
Введите название токена, которое поможет вам распознать интеграцию (например, Токен для GitLab).
Нажмите Создать.
ТестОпс сгенерирует токен и отобразит его в модальном окне.
Нажмите иконку Копировать, чтобы скопировать токен в буфер обмена.
Cохраните токен в безопасном месте, он понадобится для настройки интеграции в GitLab.
Нажмите Готово.
2.2. Укажите токен в GitLab
В GitLab откройте проект, для которого вы настраиваете интеграцию.
В сайдабре слева перейдите в раздел Settings → CI/CD.
Разверните раздел Variables.
В секции Project variables нажмите Add variable.
В появившемся окне заполните поля:
- Type — нажмите на выпадающий список и выберите Variable;
- Visibility — выберите Masked;
- Key — введите ALLURE_TOKEN;
- Value — введите API-токен, который вы сохранили на шаге 2.1.
Нажмите Add variable, чтобы сохранить настройки.
2.3. Измените пайплайн в GitLab
Примечание
Измените в пайплане каждую джобу, которая запускает тесты и участвует в интеграции.
В GitLab откройте репозиторий, для которого вы настраиваете интеграцию.
Откройте файл .gitlab-ci.yml.
Добавьте команду
before_script, которая загружает allurectl и делает его исполняемым.Совет
В приведенном ниже примере используется curl для загрузки файла. Если curl не включен в образ Docker, который вы используете для джобы, используйте wget или аналогичный инструмент.
Вы также можете создать и использовать собственный образ Docker с allurectl.
Добавьте или расширьте блок
variables. Он должен включать переменные со значениями:ALLURE_ENDPOINT— URL-адрес инстанса ТестОпс.ALLURE_PROJECT_ID— ID проекта ТестОпс.ALLURE_RESULTS— путь к директории с результатами тестов (например, build/allure-results).Если в вашем проекте несколько директорий с результатами тестов, вы можете разделить их запятыми или использовать шаблон с подстановочными символами (например, modules/*/build/allure-results).
Оберните команду, которая запускает тесты, в команду
./allurectl watch.
Пример изменения пайплайна
Предположим, вы работаете с Java-проектом, в котором файл .gitlab-ci.yml выглядит следующим образом:
yaml
test:
stage: test
image: gradle
script:
- gradle clean testЧтобы настроить интеграцию с ТестОпс, вам необходимо изменить файл по примеру ниже:
yaml
test:
stage: test
image: gradle
variables:
ALLURE_ENDPOINT: https://testops.example.com
ALLURE_PROJECT_ID: 1
ALLURE_RESULTS: build/allure-results
before_script:
- curl -fsSL https://github.com/allure-framework/allurectl/releases/latest/download/allurectl_linux_amd64 -o allurectl
- chmod +x allurectl
script:
- ./allurectl watch -- gradle clean test2.4. Запустите и проверьте пайплайн в GitLab
В GitLab откройте репозиторий, для которого вы настраиваете интеграцию.
Перейдите к запуску пайплайна, инициированному последним коммитом.
Примечание
Если у вас отключен автоматический запуск пайплайнов после коммитов, выполните запуск вручную.
Дождитесь, когда завершится выполнение пайплайна.
В деталях выполнения пайплайна нажмите на джобу, которая запускает тесты.
Ближе к концу лога найдите ссылку на запуск в ТестОпс.

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

Перейдите по ссылке в GitLab, чтобы убедиться, что она работает корректно.
2.5. Настройте джобу в ТестОпс
Перейдите в ваш проект ТестОпс.
Перейдите в раздел Джобы.
В списке будет отображаться новая джоба, автоматически добавленная во время запуска на шаге 2.4.
Напротив добавленной джобы нажмите
⋯→ Настроить.В появившемся окне заполните поля:
- Название — введите название, которое поможет вам распознать джобу.
- Сервер сборки — нажмите на выпадающий список и выберите название подключения к GitLab, которую вы добавили на шаге 1.2.
- Джоба может быть использована для запуска тестов — поставьте галочку, чтобы пользователи могли запускать джобу из ТестОпс.
Нажмите Отправить.
3. Параметризируйте джобы
GitLab использует переменные окружения для передачи параметров в пайплайны. ТестОпс интегрирует эту функцию с собственной концепцией Окружения, которая позволяет вам как задавать параметры для новых джоб, так и видеть параметры, установленные для джоб, запущенных вне ТестОпс.
Важно
Если в репозитории вашего проекта есть несколько веток, обязательно создайте переменную окружения Branch в ТестОпс и передайте ее в вашу джобу. Это специальное имя укажет GitLab, какую из веток нужно использовать.
3.1. Установите значения по умолчанию в GitLab
Примечание
Измените в пайплане каждую джобу, которая запускает тесты и участвует в интеграции.
В GitLab откройте репозиторий, для которого вы настраиваете интеграцию.
Откройте файл .gitlab-ci.yml.
Добавьте переменные и их значения по умолчанию в блок
variablesпайплайна или джобы.Пример
yamltest: stage: test image: gradle variables: ALLURE_ENDPOINT: https://testops.example.com ALLURE_PROJECT_ID: 1 ALLURE_RESULTS: build/allure-results PRODUCT_VERSION: "1.23" TESTS_BROWSER: chrome before_script: - curl -fsSL https://github.com/allure-framework/allurectl/releases/latest/download/allurectl_linux_amd64 -o allurectl - chmod +x allurectl script: - ./allurectl watch -- gradle clean test
3.2. Добавьте глобальные переменные окружения в ТестОпс
Перейдите в ваш инстанс ТестОпс.
Перейдите в раздел Администрирование → Окружения.
Для каждой переменной, которую вы хотите добавить:
- Нажмите + Создать.
- Введите глобальное название переменной.
- Нажмите Отправить.

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

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

Нажмите Отправить.
Удаление интеграции
Вы можете удалить интеграцию с GitLab двумя способами — на уровне всего инстанса ТестОпс (через раздел Администрирование) или на уровне отдельного проекта (через настройки проекта).
Важно
Последствия удаления интеграции:
Удаление на уровне инстанса — связь с инстансом GitLab будет удалена из всех джоб ТестОпс, которые относятся к интеграции:
- Иконки для запуска и обновления этих джоб в разделе Джобы станут неактивными.
- Результаты запусков тестов из GitLab не будут отправляться в инстанс ТестОпс.
Удаление на уровне проекта — связь с инстансом GitLab будет удалена из джобы ТестОпс, которая относится к интеграции и находится в этом проекте:
- Иконки для запуска и обновления этой джобы в разделе Джобы останутся активными.
- ТестОпс не сможет запустить тесты из проекта на стороне GitLab. После закрытия запуска результаты этих тестов получат статус «Неизвестный».
- Результаты запусков тестов из GitLab не будут отправляться в проект ТестОпс.
Во время удаления интеграции с CI-системой GitLab также будет удалена интеграция с таск-трекером GitLab. Подробнее о последствиях см. Интеграция с таск-трекером GitLab → Удаление интеграции.
В ТестОпс перейдите в раздел Администрирование → Интеграции.
В списке настроенных интеграций найдите и откройте интеграцию с GitLab.
В списке настроенных подключений найдите ваше подключение к GitLab и убедитесь, что оно не используется в проектах ТестОпс.
Если интеграция подключена к проектам, удалите ее из них. Для этого откройте карточку подключения к GitLab и напротив названия каждого проекта нажмите
⋯→ Удалить из проекта → Да, удалить.Напротив нужного подключения к GitLab нажмите
⋯→ Удалить → Да, удалить.

