Интеграция с CI-системой GitLab 
Интеграция с CI-системой GitLab позволяет:
- автоматически передавать результаты тестов из пайплайна GitLab в ТестОпс с помощью allurectl;
- запускать пайплайн GitLab из интерфейса ТестОпс через запуск джобы;
- синхронизировать статус запуска пайплайна сразу в обеих системах — ТестОпс и GitLab.
В настроенной интеграции одна джоба ТестОпс соответствует одному пайплайну GitLab, а один запуск джобы — одному запуску соответствующего пайплайна.
Примечание
Чтобы настроить или удалить интеграцию в ТестОпс, вы должны иметь доступ к разделам:
- Администрирование — необходимы права администратора инстанса;
- Настройки в конкретном проекте — необходима роль владельца этого проекта.
Настройка интеграции 
Чтобы настроить интеграцию с CI-системой GitLab:
- Настройте связь от ТестОпс к GitLab: - Создайте токен в GitLab. 
- На уровне инстанса ТестОпс добавьте интеграцию с GitLab, указав: - название интеграции;
- URL-адрес 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 personal access token. - После обновления страницы вы должны увидеть созданный токен. 
- Нажмите иконку копирования под Your new personal access token, чтобы скопировать токен в буфер обмена. - Cохраните токен в безопасном месте, он понадобится для настройки интеграции в проекте ТестОпс. 
Совет
Вы также можете использовать токен доступа проекта (project access token) вместо личного токена доступа, но в этом случае интеграция будет ограничена одним проектом.
1.2. Добавьте интеграцию с GitLab в ТестОпс 
- Перейдите в ваш инстанс ТестОпс. 
- Перейдите в раздел Администрирование → Интеграции. 
- Нажмите + Добавить интеграцию в правом верхнем углу. 
- В списке доступных интеграций выберите GitLab. 
- Заполните поля: - Название — название, которое поможет вам распознать интеграцию, например, GitLab production.
- Endpoint — URL-адрес инстанса GitLab, например, https://gitlab.example.com/.
 
- Если ваш инстанс GitLab использует самоподписанный SSL-сертификат, поставьте галочку напротив Отключить проверку сертификата. 
- Нажмите Добавить интеграцию. 
1.3. Включите интеграцию для проекта ТестОпс 
Чтобы включить интеграцию в нужном проекте ТестОпс, воспользуйтесь одним из способов:
- Перейдите в раздел Администрирование → Интеграции.
- В списке настроенных интеграций найдите и откройте вашу интеграцию с 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. 
- Нажмите - ⋯напротив джобы, затем выберите Настроить.
- В появившемся окне отредактируйте поля: - Название — название, которое поможет вам распознать джобу.
- Сервер сборки — выберите название интеграции, которую вы добавили на шаге 1.2.
- Джоба может быть использована для запуска тестов — если установлено, пользователи смогут запускать эту джобу из ТестОпс.
- Параметры — параметры, которые должны быть переданы в GitLab через переменные окружения (см. Окружение).
  
- Нажмите Отправить. 
3. Параметризируйте джобы 
GitLab использует переменные окружения для передачи параметров в пайплайны. ТестОпс интегрирует эту функцию с собственной концепцией Окружения, которая позволяет вам как задавать параметры для новых джоб, так и видеть параметры, установленные для джоб, запущенных вне ТестОпс.
Важно
Если в репозитории вашего проекта есть несколько веток, обязательно создайте переменную окружения Branch в ТестОпс и передайте ее в вашу джобу. Это специальное имя укажет GitLab, какую из веток нужно использовать.
3.1. Установите значения по умолчанию в GitLab 
Примечание
Вам необходимо изменить в пайплане каждую джобу, которая запускает тесты и участвует в интеграции.
- В GitLab откройте репозиторий, для которого вы настраиваете интеграцию. 
- Откройте файл .gitlab-ci.yml. 
- Добавьте переменные и их значения по умолчанию в блок - variablesпайплайна или джобы. Например:yaml- test: 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. 
- Перейдите на вкладку Проекты и убедитесь, что интеграция не используется в проектах ТестОпс. - Если интеграция подключена к проектам, удалите ее из них. Для этого напротив названия каждого проекта нажмите иконку корзины → Удалять. 
- Перейдите на вкладку Конфигурация. 
- Нажмите Удалить интеграцию. 
- Нажмите Удалить. 

