Перейти к содержанию

Настройка связи для работы с Test IT

Test IT — это платформа управления тестированием (TMS). Интеграция с Test IT позволяет управлять автотестами, расположенными в репозитории GitFlic.

Подготовка данных из Test IT

Подготовьте и сохраните данные для настройки интеграции в Test IT:

  • PrivateToken пользователя Test IT - токен доступа для использования утилиты и rest-api
  • ProjectID - uuid проекта, в котором хранятся тесты
  • ConfigurationID - uuid конфигурации для запуска автотестов
  • BaseUrl - адрес, где развернут Test IT

Они понадобятся в дальнейшем при работе с Test IT CLI

Подготовка данных из GitFlic

Подготовьте и сохраните данные для настройки интеграции в GitFlic:

  • Api-token пользователя GitFlic - токен доступа для использования rest-api

Настройка в Test IT

В Test IT создайте вебхук на событие Запуск автотестов для запуска конвейера в GitFlic. В качестве URL необходимо указать REST-API запрос на запуск конвейера.

Для того, чтобы создать REST-API запрос, необходимо обратиться на определенный адрес (endpoint), который должен иметь следующее начало:

Домен и порт при работе с self-hosted решением могут отличаться.

Пример запроса:

POST
https://my.gitflic.site/rest-api/project/ownername/projectname/cicd/pipeline/start

В заголовках вебхука укажите 2 параметра:

Название Значение
Content-Type application/json
Authorization token
Где {token} - это api-токен, созданный при подготовке данных в GitFlic

В теле запроса укажите следующие данные и сохраните:

  • Тип контекста : Отправлять пользовательский контент
  • Заменить системные параметры: true
  • Экранировать параметры: false
  • Тело запроса: в примере
{
    "refName": "master",
    "isTag": "false",
    "variables": [
        {
            "key": "TEST_RUN_ID",
            "value" : "$TEST_RUN_ID"
        }
    ]
}

При необходимости дополните тело запроса другими предопределенными (системными) переменными. В документации представлен перечень доступных для использования переменных

Настройка в GitFlic

Все полученные данные из Test IT сохраните в настройках проекта в качестве переменных CI/CD

Для удобства, названия переменных имеют следующие значения

Название переменной в GitFlic Значение переменной из Test IT
URL Адрес, где развернут Test IT
TOKEN Токен доступа для использования утилиты и rest-api
CONF_ID Uuid конфигурации для запуска автотестов
PROJECT_ID Uuid проекта, в котором хранятся тесты

Для работы интеграции требуется GitFlic-агент с типом Docker

Образ для проверки интеграции должен включать в себя python (pip) и curl. Используйте dockerfile ниже для создания такого образа:

# Базовый образ, назовем его demo-python-image
FROM python:3.11-slim

# Устанавливаем curl и другие зависимости
RUN apt-get update && apt-get install -y curl \
    && rm -rf /var/lib/apt/lists/* \
    && apt-get clean

# Устанавливаем рабочую директорию
WORKDIR /app

# Копируем requirements.txt (если его нет, удалите строку)
COPY requirements.txt .

# Устанавливаем Python зависимости
# RUN pip install -r requirements.txt
RUN pip install testit-cli


# Команда по умолчанию
CMD ["python", "--version"]

Выполните в директории с dockerfile команду docker build -t demo-python-image . для сборки демонстрационного образа.

Подготовьте самостоятельно отчет с результатами автоматического тестирования. Подойдет любой .xml отчет после выполнения проверки Pytest. Загрузите этот отчет в проект в директорию results

Создание gitflic-ci.yaml и отладка процесса

В проекте создайте gitflic-ci.yaml, заполните его кодом из примера ниже:

# Данный файл - шаблонная конфигурация CI/CD конвейера. Он может быть изменен по Вашему усмотрению. 
# 
# Подробнее о синтаксисе можно узнать в документации:
# https://docs.gitflic.ru/cicd/gitflic-ci-yaml

image: demo-python-image

variables:
    TEST_RUN_ID: "empty"

stages:
  - debug
  - build
  - testing
  - sending

# debug_job:
#   stage: debug
#   script:
#     - echo "URL = $URL"
#     - echo "TOKEN = $TOKEN"
#     - echo "CONF_ID = $CONF_ID"
#     - echo "PROJECT_ID = $PROJECT_ID"
#     - echo "PIPELINE_ID = $CI_PIPELINE_IID"
#     - echo "TEST_RUN_ID = $TEST_RUN_ID"

build:
  stage: build
  script:
    - echo "Собранный проект" > build.txt
  artifacts:
    paths: build.txt

make_test:
  stage: testing
  needs: [build]
  script:
    - echo "Here PyTest jobs"


send_results:
  stage: sending
  needs: [make_test]
  script:
    - |
      if [ "$TEST_RUN_ID" = "empty" ]; then
        testit testrun create --url $URL \
                            --token $TOKEN \
                            -pi $PROJECT_ID \
                            --testrun-name "Pipe $CI_PIPELINE_IID" \
                            --output id.txt
        TEST_RUN_ID="$(cat id.txt)"
      else
        echo "TestRunId = $TEST_RUN_ID"
      fi
    - |
      curl -sS -L --fail-with-body --location --request PUT ''"$URL"'api/v2/testRuns' \
                      --header 'Authorization: PrivateToken '"$TOKEN"'' \
                      --header 'Content-Type: application/json' \
                      --data '{
                        "id": "'"$TEST_RUN_ID"'",
                        "name": "Pipe '"$CI_PIPELINE_IID"'",
                        "description": "'"$GITFLIC_USER_LOGIN"'",
                        "launchSource": "",
                        "attachments": [],
                        "links": []
                      }'
    - |
      testit results upload \
                    --url $URL \
                    --configuration-id $CONF_ID \
                    --results results/test-results.xml \
                    --token $TOKEN \
                    --testrun-id $TEST_RUN_ID                    
    - | 
      testit testrun complete --url $URL \
                    --token $TOKEN \
                    --testrun-id $TEST_RUN_ID

Для проверки интеграции запустите конвейер.

При данной конфигурации тесты можно запускать из Test IT и из GitFlic, результаты будут сохранены в новом прогоне автотестов.