Оказывается, это возможно. Есть две основные задачи интеграции: результаты выполнения тестов и результаты покрытия кода. Я предполагаю, что нормальная кодовая база Python 3 и стандартный unittest
набор тестов.
Тестовый бегун
Bamboo ожидает результаты выполнения теста в формате JUnit XML . В Cheese Shop есть отдельный тестовый прогон , способный выдавать такой вывод, но для этого потребуется написать небольшой код, что не очень приятно. Лучший способ сохранить целостность кодовой базы - использовать возможности pytest .
Код покрытия
Bamboo поддерживает только формат XML Atlassian Clover. Важно отметить, что вам не нужен подключаемый модуль Atlassian Clover (и лицензия на него, которая стоит несколько долларов). Бамбук работает самостоятельно.
Стандартный инструмент покрытия кода Python де-факто, охват , производит несколько
Формат Cobertura XML, но есть конвертер . Есть плагин pytest для интеграции с инструментом покрытия.
Решение
Вот среда Tox , где я использовал pytest, чтобы обе интеграции Bamboo работали.
[tox]
envlist = py34
skipsdist = True
[testenv]
setenv = LANG=C.UTF-8
basepython = python3.4
deps = -r{toxinidir}/requirements.txt
[testenv:bamboo]
commands =
py.test --junitxml=results.xml \
--cov=project_name --cov-config=tox.ini --cov-report=xml \
--cov-report=html project_name/test
coverage2clover -i coverage.xml -o clover.xml
deps =
{[testenv]deps}
pytest
pytest-cov
coverage2clover
# read by pytest
[pytest]
python_files = *.py
# read by coverage
[run]
omit=project_name/test/*,project_name/__main__.py
Обратите внимание, что как pytest, так и pytest-cov используют tox.ini
для конфигурации, которая не поддерживается в командной строке. Это снова избавляет вас от дополнительных помех в корне вашего репо. pytest пытается прочитать tox.ini
автоматически. pytest-cov обходит .coveragerc
, но поскольку это также файл INI, tox.ini
подходит.
На стороне Bamboo добавьте скрипт-задачу , которая запускает tox -e bamboo
. Затем добавьте JUnit parse task в задание. В своем диалоге под укажите пользовательские каталоги результатов , вставьте results.xml
.
Настройка покрытия производится другим способом.
- Открыть Разное Вкладка вашей работы
- Проверка Использование Clover для сбора покрытия кода для этой сборки
- Выберите Clover уже интегрирован в эту сборку, и будет создан файл clover.xml
- Введите
clover.xml
в Clover XML Location
На этом этапе вашей следующей сборки вы увидите общее покрытие и два графика: История покрытия и Строки истории кода . Также приятно иметь интерактивный HTML, созданный инструментом покрытия, так что вы можете перейти к определенной строке кода.
Настройки, сделанные выше (по крайней мере, в Bamboo 5.7) создали Clover Report (System) на Артефакт на вкладке задания. Откройте его и установите для htmlcov
значение Местоположение поле и *.*
значение Копирование шаблона . Bamboo теперь будет собирать отчеты в формате HTML. Вы можете увидеть его на вкладке Clover вашего плана.