标签: buildbot

Python的"漂亮"持续集成

这是一个有点虚荣的问题,但BuildBot的输出并不是特别好看.

例如,与...相比

..和其他人,BuildBot看起来相当......古老

我目前正在玩Hudson,但它是以Java为中心的(虽然在本指南中,我发现它比BuildBot更容易设置,并产生了更多信息)

基本上:有没有针对python的持续集成系统,它会产生大量闪亮的图形等等?


更新:从那时起,Jenkins项目取代了Hudson作为该软件包的社区版本.原作者也转到了这个项目.Jenkins现在是Ubuntu/Debian,RedHat/Fedora/CentOS等标准软件包.以下更新仍然基本正确.与詹金斯一起做这件事的出发点是不同的.

更新:在尝试了一些替代方案之后,我想我会坚持使用哈德森.诚信很好,很简单,但非常有限.我认为 Buildbot更适合拥有众多构建从服务器,而不是像我使用它一样在一台机器上运行.

为Hudson设置Python项目非常简单:

  • http://hudson-ci.org/下载Hudson
  • 运行它 java -jar hudson.war
  • 在默认地址上打开Web界面 http://localhost:8080
  • 转到Manage Hudson,Plugins,单击"更新"或类似内容
  • 安装Git插件(我必须git在Hudson全局首选项中设置路径)
  • 创建新项目,输入存储库,SCM轮询间隔等
  • 安装nosetests通过,easy_install如果它还没有
  • 在构建步骤中,添加 nosetests --with-xunit --verbose
  • 选中"发布JUnit测试结果报告"并将"测试报告XML"设置为 **/nosetests.xml

这就是所需要的.您可以设置电子邮件通知,插件值得一看.我目前正在使用的一些Python项目:

  • SLOCCount插件计算代码行(并绘制图表!) - 您需要单独安装sloccount
  • 用于解析PyLint输出的违规(您可以设置警告阈值,绘制每个构建的违规数量)
  • Cobertura可以解析coverage.py输出.使用时,Nosetest可以在运行测试时收集覆盖率nosetests --with-coverage(这会将输出写入**/coverage.xml)

python continuous-integration buildbot jenkins

116
推荐指数
6
解决办法
3万
查看次数

用于C++持续集成的buildbot vs hudson/jenkins

我目前正在使用jenkins/hudson进行持续集成,主要是一个C++项目.我们为主干和每个分支都有单独的项目.此外,还有一些Java代码的相关项目,但是这些项目的设置现在相当基础(我们可能会在稍后做更多).C++项目执行以下操作:

  • 使用选项构建所有内容,以便重新配置,执行干净的构建或使用新的签出
  • 可选择构建并运行所有测试
  • 可选择使用Valgrind的memcheck运行所有测试
  • 运行cppcheck
  • 生成doxygen文档
  • 发布报告:单元测试,valgrind,cppcheck,编译器警告,SLOC,打开任务和代码覆盖(使用gcov,gcovr和cobertura插件)
  • 每晚或按需部署代码到测试环境和包存储库

一切都可以配置为自动构建,可选配置为按需构建.在下面,有一个bash脚本控制其中的大部分内容,这更依赖于我们的构建系统,它使用automake和autoconf以及自定义bash脚本.

我们开始使用Hudson(当时)因为这是Java人员正在使用的东西,我们只想要夜间构建.从那时起,我们增加了很多,并继续增加更多.在某些方面哈德森很棒,但肯定不理想.

我已经看过其他解决方案了,唯一看起来像是替代品的是buildbot.buildbot会更好地适应这种情况吗?自从我们已经在使用Hudson以来,投资是否值得?为什么?

编辑:有人问为什么我没有发现哈德森/詹金斯是理想的.简短的回答是一切都可以改进.我只是想知道,如果詹金斯是我的使用情况或是否有更好的东西(buildbot?),这将是更容易保持在即使有新的要求上来从长远看目前最好的解决方案.

c++ continuous-integration hudson buildbot jenkins

75
推荐指数
3
解决办法
4万
查看次数

重命名buildbot中的内部版本

有没有办法在buildbot中重命名构建而不会丢失所有日志?

例如,我有几个可能构建的Windows奴隶:"Windows 2008+ DEBUG"但我想将此版本重命名为:"Windows 2008R2 + DEBUG".

如何设置compare_attr(如果这甚至是我需要做的事情),以便所有日志/等等都包含在新版本的先前版本中.

我可以手动重命名目录并期望一切正常吗?实验告诉我,这不起作用,但也许我可以写一个命令来改变某些事情?

python buildbot

22
推荐指数
1
解决办法
741
查看次数

如何在公司中扩展buildbot

我最近一直在研究buildbot,缺乏良好的文档和样本配置使得很难理解buildbot的常用方式.

根据buildbot手册,每个buildmaster负责1个代码库.这意味着,想要在10个项目上使用buildbot的公司需要维护10组不同的buildbot安装(主从配置,开放端口,带输出的网站等).这真的是事情的完成方式吗?我错过了一个创建易于维护和监控的混搭的选项吗?

谢谢!

buildbot

12
推荐指数
1
解决办法
2745
查看次数

使用Buildbot支持多个存储库

目前,Buildbot不支持多个存储库.如果有人想要这个,那么需要运行Buildbot的单独实例.

我仍然很好奇是否有人想出了一个创造性的解决方法来让这个功能无论如何都能正常工作.

buildbot

9
推荐指数
2
解决办法
5519
查看次数

如何在Buildbot步骤中"获取"环境?

在Buildbot中,我需要能够在编译步骤之前"获取"环境.

如果我使用bash从命令行构建应用程序,我将不得不这样做:

. envrionment-set-up-script
build_command
Run Code Online (Sandbox Code Playgroud)

在build bot master.cfg文件中,我尝试了以下内容:

factory.addStep(ShellCommand(command=["source","environment-set-up-script"])
factory.addStep(ShellCommand(command=[".","environment-set-up-script"]))
factory.addStep(Configure(command=["source","environment-set-up-script"]))
factory.addStep(Configure(command=[".","environment-set-up-script"]))
Run Code Online (Sandbox Code Playgroud)

所有这些都失败了,这是因为无法找到命令,这是有道理的,因为它是一个内置的bash.

此外,我不认为这是正确的方法,因为在调用工厂的下一步时不一定会使用环境.

buildbot

9
推荐指数
2
解决办法
3357
查看次数

有没有buildbot轮询一个新的提交git存储库?

是否有一个buildbot插件将轮询git存储库以进行新的提交,比如当前包含的changes.SVNPoller

我找到的最接近的是git_buildbot.py,但是它作为一个后提交钩子,所以不能用我的设置(使用Github,并且在github的post-commit无法访问的机器上使用buildbot) - 只需轮询git存储库会完美的.

我目前每小时进行一次构建运行,但除非发生变化,否则运行测试并没有任何意义.

git continuous-integration buildbot

8
推荐指数
1
解决办法
5165
查看次数

Buildbot解析Python单元测试结果

我有一个测试套件,以Python单元测试格式输出测试结果:http://docs.python.org/library/unittest.html

是否有可以解析此表单的现有Buildbot模块/插件?

例:

DigitalReadWrite_02                                         ... ok
DigitalReadWrite_03                                         ... ok
DigitalReadWrite_04                                         ... ok
PWMoutput_02  (PWM=128 50% LOW 49% HIGH)                    ... ok
PWMoutput_03  (PWM=128 50% LOW 49% HIGH)                    ... ok
PWMoutput_04  (PWM=128 50% LOW 49% HIGH)                    ... ok
--------------------------
Ran 6 tests in 1.652s

OK
Run Code Online (Sandbox Code Playgroud)

我编写了一个自定义解析器,但它只有基本情况.是否值得努力使其全面适用于所有类型的Python单元测试格式.

python parsing unit-testing buildbot

8
推荐指数
1
解决办法
2321
查看次数

如何自定义buildbot网页

我正在尝试为测试buildbot制作一些额外的网页,因为我打算让一个人运行我的项目.

实际上,我希望有一个瀑布页面,显示构建特定构建器的按钮,靠近构建名称,而不是仅在构建器页面中.我还希望从构建器工作文件夹中以及从属机器上的其他位置加载一些参考文档; 使用按钮显示或隐藏它们.

我查看了手册,但我没有看到任何关于如何自定义或创建新的html页面的信息,这些页面可以利用Buildbot功能(比如Buildbot中已包含的模板).

我打开了一些页面,看到有些html文件实际上有非html代码语句,如

% macro
% for
Run Code Online (Sandbox Code Playgroud)

等等.我不是一个网络程序员,所以我对我应该寻找什么感到无能为力.试图用谷歌来搜索macroHTML,我得到了一些与Wiki定制有关的结果; 它看起来不像是Python语言所以我很丢失.

有没有人成功地为buildbot制作自定义页面,并且可以给我一些关于学习内容的指示?

html buildbot web

8
推荐指数
1
解决办法
3492
查看次数

重写服务时,Docker组合孤立容器

我想要两个docker-compose文件,其中一个覆盖另一个.
(动机来自Docker Compose Docs)
用例来自buildbot环境.第一个docker-compose文件应该定义一个简单的服务.这是一项即将测试的服务.让我们来

version: '2'
services:
  service-node:
    build:
      context: ./res
      dockerfile: Dockerfile
    image: my/server
    env_file: .env
Run Code Online (Sandbox Code Playgroud)

第二个docker-compose文件(让它命名为docker-compose.test.yml)覆盖服务节点以添加buildbot worker功能,并创建第二个容器,即buildbot主节点,它将控制测试机器.让我们来

version: '2'
services:
  service-node:
    build:
      context: ./res
      dockerfile: buildbot.worker.Dockerfile
    image: my/buildbot-worker
    container_name: bb-worker
    env_file: ./res/buildbot.worker.env
    environment:
      - BB_RES_DIR=/var/lib/buildbot
    networks:
      testlab:
        aliases:
          - bb-worker
    volumes:
      - ./vol/bldbot/worker:/home/bldbotworker
    depends_on:
      - bb-master

  bb-master:
    build:
      context: ./res
      dockerfile: buildbot.master.Dockerfile
    image: my/buildbot-master
    container_name: bb-master
    env_file: ./res/buildbot.master.env
    environment:
      - BB_RES_DIR=/var/lib/buildbot
    networks:
      - testlab
    expose:
      - "9989"
    volumes:
      - ./vol/bldbot/master:/var/lib/buildbot

networks:
  testlab:
    driver: …
Run Code Online (Sandbox Code Playgroud)

buildbot docker docker-compose

8
推荐指数
1
解决办法
1万
查看次数