Интеграция с CircleCI 
В этой инструкции описывается, как настроить интеграцию ТестОпс с CircleCI в проекте, который использует CircleCI для запуска тестов.
Примечание
Чтобы настроить или удалить интеграцию в ТестОпс, вы должны иметь доступ к разделам:
- Администрирование — необходимы права администратора инстанса;
- Настройки в конкретном проекте — необходима роль владельца этого проекта.
Интеграция с CircleCI позволяет настроить двустороннюю связь:
- Джоба в пайплайне CircleCI использует allurectl, чтобы отправить свой статус и результаты тестов в ТестОпс.
- ТестОпс использует API CircleCI для запуска новых пайплайнов, при необходимости передавая тест-план.
После остановки пайплайна соответствующий запуск в ТестОпс можно закрыть вручную или автоматически в соответствии с настройками автоматического закрытия.
Настройка интеграции 
Чтобы настроить интеграцию с CircleCI:
- Настройте связь от ТестОпс к CircleCI: - Создайте токен в CircleCI. 
- На уровне инстанса ТестОпс добавьте интеграцию с CircleCI, указав: - название интеграции;
- URL-адрес CircleCI.
 
- На уровне инстанса или проекта ТестОпс включите добавленную интеграцию для проекта, указав созданный токен из CircleCI. 
 
- Настройте связь от CircleCI к ТестОпс: - Создайте API-токен в ТестОпс.
- Укажите созданный API-токен в CircleCI.
- Измените джобу в CircleCI.
- Запустите и проверьте пайплайн в CircleCI.
- Настройте созданную джобу в ТестОпс.
 
- Параметризируйте джобы CircleCI (если необходимо). 
1. Настройте связь от ТестОпс к CircleCI 
1.1. Создайте токен в CircleCI 
- В CircleCI нажмите на ваш аватар в левом нижнем углу. 
- В сайдбаре слева перейдите в раздел Personal API Tokens. 
- Нажмите Create New Token. 
- В появившемся окне введите название токена в поле Token Name, чтобы помочь вам распознать токен, например, Токен для ТестОпс. 
- Нажмите Add API Token. 
- В появившемся окне нажмите Copy, чтобы скопировать токен в буфер обмена. - Cохраните токен в безопасном месте, он понадобится для настройки интеграции в проекте ТестОпс. 
1.2. Добавьте интеграцию с CircleCI в ТестОпс 
- Перейдите в ваш инстанс ТестОпс. 
- Перейдите в раздел Администрирование → Интеграции. 
- Нажмите + Добавить интеграцию в правом верхнем углу. 
- В списке доступных интеграций выберите CircleCI. 
- Заполните поля: - Название — название, которое поможет вам распознать интеграцию, например, CircleCI production.
- Endpoint — URL-адрес инстанса CircleCI, например, https://circleci.com/.
 
- Если ваш инстанс CircleCI использует самоподписанный SSL-сертификат, поставьте галочку напротив Отключить проверку сертификата. 
- Нажмите Добавить интеграцию. 
1.3. Включите интеграцию для проекта ТестОпс 
Чтобы включить интеграцию в нужном проекте ТестОпс, воспользуйтесь одним из способов:
- Перейдите в раздел Администрирование → Интеграции.
- В списке настроенных интеграций найдите и откройте вашу интеграцию с CircleCI.
- Перейдите на вкладку Проекты.
- Справа от поля поиска нажмите +.
- В выпадающем списке Проект выберите нужный проект ТестОпс.
- В появившемся окне укажите Токен, который вы сохранили на шаге 1.1.
- Нажмите Проверить соединение. Если токен указан верно, через несколько секунд появится сообщение «Соединение установлено».
- Нажмите Добавить интеграцию.
2. Настройте связь от CircleCI к ТестОпс 
Выполните шаги ниже, чтобы настроить вторую часть двусторонней связи: отправку статусов пайплайнов и результатов тестов из CircleCI в ТестОпс.
2.1. Создайте токен в ТестОпс 
- В ТестОпс нажмите на ваш аватар и перейдите в раздел API-токены. 
- Нажмите + Токен. 
- Введите название токена, которое поможет вам распознать интеграцию, например, Токен для CircleCI. 
- Нажмите Создать. - ТестОпс сгенерирует токен и отобразит его в модальном окне. 
- Нажмите иконку Копировать, чтобы скопировать токен в буфер обмена. - Cохраните токен в безопасном месте, он понадобится для настройки интеграции в CircleCI. 
2.2. Укажите токен в CircleCI 
- В CircleCI откройте страницу проекта и нажмите Project Settings в правом верхнем углу. 
- В сайдбаре слева перейдите в раздел Environment Variables. 
- Нажмите Add Environment Variable. 
- В появившемся окне заполните поля: - Name — ALLURE_TOKEN.
- Value — API-токен, который вы сохранили на шаге 2.1.
 
- Нажмите Add Environment Variable, чтобы сохранить настройки. 
2.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://testops.example.com
      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 test2.4. Запустите и проверьте пайплайн 
- В CircleCI откройте проект, для которого вы настраиваете интеграцию. 
- Перейдите к запуску пайплайна, инициированному последним коммитом. - Примечание - Если у вас отключен автоматический запуск пайплайнов после коммитов, выполните запуск вручную. 
- Дождитесь, когда завершится выполнение пайплайна. 
- В деталях выполнения пайплайна нажмите на шаг, который запускает тесты. 
- Ближе к концу лога найдите ссылку на запуск в ТестОпс.  
- Перейдите по ссылке в ТестОпс и откройте результаты одного из тестов. 
- В карточке результата теста в левом нижнем углу найдите ссылку на пайплайн CircleCI.  
- Перейдите по ссылке в CircleCI, чтобы убедиться, что она работает корректно. 
2.5. Настройте джобу в ТестОпс 
- Перейдите в ваш проект ТестОпс. 
- Перейдите в раздел Джобы. - На странице должна быть новая джоба, автоматически добавленная и настроенная во время запуска на шаге 2.4. 
- Нажмите - ⋯напротив джобы, затем выберите Настроить.
- В появившемся окне отредактируйте поля: - Название — название, которое поможет вам распознать джобу.
- Сервер сборки — название интеграции, которую вы добавили на шаге 1.2.
- Джоба может быть использована для запуска тестов — если установлено, пользователи смогут запускать эту джобу из ТестОпс.
- Параметры — параметры, которые должны быть переданы в CircleCI через переменные окружения, см. Окружение.
  
- Нажмите Отправить. 
3. Параметризируйте джобы 
Пайплайны 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://testops.example.com
      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 test3.2. Добавьте глобальные переменные окружения в ТестОпс 
- Перейдите в ваш инстанс ТестОпс. 
- Перейдите в раздел Администрирование → Окружения. 
- Для каждого параметра, который вы хотите добавить, нажмите + Создать, введите название параметра и нажмите Отправить. - Обратите внимание, что это название может быть человекочитаемым и не обязательно должно совпадать с названием из шага 3.1.  
3.3. Сопоставьте параметры с переменными окружения в ТестОпс 
- Перейдите в ваш проект ТестОпс. 
- Перейдите в раздел Настройки → Окружение. 
- Для каждого параметра, который вы хотите использовать: - Нажмите + Создать, если параметра нет в списке. Если параметр уже существует, нажмите иконку Редактировать рядом с его названием.
- В поле Ключ укажите название переменной окружения из шага 3.1.
- В поле Переменная окружения выберите глобальное название параметра из шага 3.2.
- Нажмите Отправить.
  
3.4. Добавьте параметры в джобу ТестОпс 
- Перейдите в раздел Джобы. 
- Напротив джобы, которую вы хотите параметризировать, нажмите - ⋯→ Настроить.
- Для каждого параметра, который вы хотите использовать, в секции Параметры нажмите Добавить и заполните поля: - Название — название переменной окружения из шага 3.1.
- Значение — значение по умолчанию, такое же, как defaultиз шага 3.1.
- Переменная окружения — глобальное название параметра из шага 3.2.
  
- Нажмите Отправить. 
Удаление интеграции 
Вы можете удалить интеграцию с CircleCI двумя способами — на уровне всего инстанса ТестОпс (через раздел Администрирование) или на уровне отдельного проекта (через настройки проекта).
Важно
Последствия удаления интеграции:
- Удаление на уровне инстанса — связь с инстансом CircleCI будет удалена из всех джоб ТестОпс, которые относятся к интеграции: - Иконки для запуска и обновления этих джоб в разделе Джобы станут неактивными.
- Результаты запусков тестов из CircleCI не будут отправляться в инстанс ТестОпс.
 
- Удаление на уровне проекта — связь с инстансом CircleCI будет удалена из джобы ТестОпс, которая относится к интеграции и находится в этом проекте: - Иконки для запуска и обновления этой джобы в разделе Джобы останутся активными.
- ТестОпс не сможет запустить тесты из проекта на стороне CircleCI. После закрытия запуска результаты этих тестов получат статус «Неизвестный».
- Результаты запусков тестов из CircleCI не будут отправляться в проект ТестОпс.
 
- Перейдите в раздел Администрирование → Интеграции. 
- В списке настроенных интеграций найдите и откройте вашу интеграцию с CircleCI. 
- Перейдите на вкладку Проекты и убедитесь, что интеграция не используется в проектах ТестОпс. - Если интеграция подключена к проектам, удалите ее из них. Для этого напротив названия каждого проекта нажмите иконку корзины → Удалять. 
- Перейдите на вкладку Конфигурация. 
- Нажмите Удалить интеграцию. 
- Нажмите Удалить. 

