Atlassian的竹子和Django和Python的 - 可能吗?(Atlassian Bambo

2019-08-05 21:06发布

在我的公司,我们目前使用Atlassian的竹为我们的持续集成工具。 目前,我们使用Java为我们所有的项目,所以它的伟大工程。

但是,我们使用一个Django + Python的为我们的新应用之一考虑。 我想知道是否可以使用竹本。

首先,让我说,我已经熟悉的竹低水平,因为我只用过它,而不是将其配置(不是像变了一个构建了svn检出目录简单的改变等)。

显然,不只是在运行构建(因为Python项目并没有真正建立)很多点,但我希望能够用竹运行测试套件,以及利用竹子部署最新的代码到我们的各种测试环境,我们与我们的Java项目做的方式。

竹是否支持与Python项目这种类型的东西?

Answer 1:

竹本质上只是运行一个shell脚本,所以这也很容易为:

./manage.py test

因为它通常是:

mvn clean install

要么:

ant compile

您可能需要按摩,Django的测试运行到传统的JUnit XML输出的输出,让竹子可以给你多少测试通过漂亮的图表。 看看这篇文章关于使用xmlrunner.py得到Python和工作哈德森 。 也看看NoseXUnit 。



Answer 2:

你甚至可以添加对PIP和virtualenv中的引导在一个干净的环境很容易,这是很酷:

wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py --root=${bamboo.build.working.directory}/tmp --ignore-installed
export PATH=${bamboo.build.working.directory}/tmp/usr/local/bin:$PATH
export PYTHONPATH=${bamboo.build.working.directory}/tmp/usr/local/lib/python2.7/dist-packages:$PYTHONPATH
pip install --root=${bamboo.build.working.directory}/tmp --ignore-installed virtualenv
virtualenv virtual_tmp
cd virtual_tmp
. bin/activate
echo Pip is located `which pip`
pip install django
pip install djangorestframework

警告, source bin/activate作为内嵌脚本任务被存储到SH文件(所以不工作bash在运行它sh兼容模式)。

编辑

更妙的是,我们可以在它上面运行单元测试,用能的竹JUnit的解析XML输出:

pip install unittest-xml-reporting
python manage.py test --noinput --testrunner="xmlrunner.extra.djangotestrunner.XMLTestRunner"


Answer 3:

事实证明,这是可能的。 有两种主要的集成任务:测试运行结果和代码覆盖率结果。 我认为正常的Python代码库3和标准unittest的测试套件。

测试运行

竹期望在测试运行结果的JUnit XML格式 。 有独立的测试运行的奶酪店能够产生这样的输出,但它需要你写一些代码来运行它,这是不是很好。 这使代码库完好更好的办法是使用pytest的功能。

代码覆盖率

竹只支持Atlassian的三叶草的XML格式。 这里重要的一点是,你并不需要启用Atlassian的四叶草插件(和它的许可花费一些钱)。 竹制品自身。

Python的事实上的标准代码覆盖工具, 覆盖范围 ,一定程度上产生的Cobertura XML格式,但有一个转换器 。 有一个pytest插件与覆盖工具集成。

这里的弓形虫 ,我用pytest以使两个竹集成的工作环境。

[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冠状病毒绕过来.coveragerc ,而是因为它也是一个INI文件, tox.ini配合。

竹边添加脚本任务运行tox -e bamboo 。 然后加入JUnit的解析任务的工作。 在它的对话,在指定自定义结果目录results.xml

覆盖配置做其他的方式。

  1. 你的工作打开其他选项卡
  2. 选中使用三叶草收集代码覆盖率此版本
  3. 选择四叶草已经集成到这个版本和clover.xml文件将被制作
  4. 类型clover.xml四叶草XML位置

在你下一次构建了这一点,你会看到全覆盖和两个图表: 覆盖历史历史记录码线 。 这也是不错的通过覆盖工具产生交互的网页,这样你就可以深入到特定的代码行。

(至少在竹5.7)以上所做的设置已经在神器任务的选项卡创建三叶草报告(系统)。 打开它,并设置htmlcov位置字段,以及*.* 复制模式 。 竹现在将收集的HTML报告。 你可以在你的计划的三叶草标签上看到它。



Answer 4:

如果你使用pytest你可以简单地使用py.test --junitxml=/path/to/results/xml/file.xml



文章来源: Atlassian Bamboo with Django & Python - Possible?