这是一个有点虚荣的问题,但BuildBot的输出并不是特别好看.
例如,与...相比
..和其他人,BuildBot看起来相当......古老
我目前正在玩Hudson,但它是以Java为中心的(虽然在本指南中,我发现它比BuildBot更容易设置,并产生了更多信息)
基本上:有没有针对python的持续集成系统,它会产生大量闪亮的图形等等?
更新:从那时起,Jenkins项目取代了Hudson作为该软件包的社区版本.原作者也转到了这个项目.Jenkins现在是Ubuntu/Debian,RedHat/Fedora/CentOS等标准软件包.以下更新仍然基本正确.与詹金斯一起做这件事的出发点是不同的.
更新:在尝试了一些替代方案之后,我想我会坚持使用哈德森.诚信很好,很简单,但非常有限.我认为 Buildbot更适合拥有众多构建从服务器,而不是像我使用它一样在一台机器上运行.
为Hudson设置Python项目非常简单:
java -jar hudson.war
http://localhost:8080
git
在Hudson全局首选项中设置路径)nosetests
通过,easy_install
如果它还没有nosetests --with-xunit --verbose
**/nosetests.xml
这就是所需要的.您可以设置电子邮件通知,插件值得一看.我目前正在使用的一些Python项目:
nosetests --with-coverage
(这会将输出写入**/coverage.xml
)我目前正在使用jenkins/hudson进行持续集成,主要是一个C++项目.我们为主干和每个分支都有单独的项目.此外,还有一些Java代码的相关项目,但是这些项目的设置现在相当基础(我们可能会在稍后做更多).C++项目执行以下操作:
一切都可以配置为自动构建,可选配置为按需构建.在下面,有一个bash脚本控制其中的大部分内容,这更依赖于我们的构建系统,它使用automake和autoconf以及自定义bash脚本.
我们开始使用Hudson(当时)因为这是Java人员正在使用的东西,我们只想要夜间构建.从那时起,我们增加了很多,并继续增加更多.在某些方面哈德森很棒,但肯定不理想.
我已经看过其他解决方案了,唯一看起来像是替代品的是buildbot.buildbot会更好地适应这种情况吗?自从我们已经在使用Hudson以来,投资是否值得?为什么?
编辑:有人问为什么我没有发现哈德森/詹金斯是理想的.简短的回答是一切都可以改进.我只是想知道,如果詹金斯是我的使用情况或是否有更好的东西(buildbot?),这将是更容易保持在即使有新的要求上来从长远看目前最好的解决方案.
有没有办法在buildbot中重命名构建而不会丢失所有日志?
例如,我有几个可能构建的Windows奴隶:"Windows 2008+ DEBUG"但我想将此版本重命名为:"Windows 2008R2 + DEBUG".
如何设置compare_attr
(如果这甚至是我需要做的事情),以便所有日志/等等都包含在新版本的先前版本中.
我可以手动重命名目录并期望一切正常吗?实验告诉我,这不起作用,但也许我可以写一个命令来改变某些事情?
我最近一直在研究buildbot,缺乏良好的文档和样本配置使得很难理解buildbot的常用方式.
根据buildbot手册,每个buildmaster负责1个代码库.这意味着,想要在10个项目上使用buildbot的公司需要维护10组不同的buildbot安装(主从配置,开放端口,带输出的网站等).这真的是事情的完成方式吗?我错过了一个创建易于维护和监控的混搭的选项吗?
谢谢!
目前,Buildbot不支持多个存储库.如果有人想要这个,那么需要运行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插件将轮询git存储库以进行新的提交,比如当前包含的changes.SVNPoller
?
我找到的最接近的是git_buildbot.py,但是它作为一个后提交钩子,所以不能用我的设置(使用Github,并且在github的post-commit无法访问的机器上使用buildbot) - 只需轮询git存储库会完美的.
我目前每小时进行一次构建运行,但除非发生变化,否则运行测试并没有任何意义.
我有一个测试套件,以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单元测试格式.
我正在尝试为测试buildbot制作一些额外的网页,因为我打算让一个人运行我的项目.
实际上,我希望有一个瀑布页面,显示构建特定构建器的按钮,靠近构建名称,而不是仅在构建器页面中.我还希望从构建器工作文件夹中以及从属机器上的其他位置加载一些参考文档; 使用按钮显示或隐藏它们.
我查看了手册,但我没有看到任何关于如何自定义或创建新的html页面的信息,这些页面可以利用Buildbot功能(比如Buildbot中已包含的模板).
我打开了一些页面,看到有些html文件实际上有非html代码语句,如
% macro
% for
Run Code Online (Sandbox Code Playgroud)
等等.我不是一个网络程序员,所以我对我应该寻找什么感到无能为力.试图用谷歌来搜索macro
HTML,我得到了一些与Wiki定制有关的结果; 它看起来不像是Python语言所以我很丢失.
有没有人成功地为buildbot制作自定义页面,并且可以给我一些关于学习内容的指示?
我想要两个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)