Настройка связи для работы с 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), который должен иметь следующее начало:
api.gitflic.ru
для работы с API на gitflic.rulocalhost:8080/rest-api
для работы с API в self-hosted сборках
Домен и порт при работе с 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, результаты будут сохранены в новом прогоне автотестов.