可以自定义Buildbot WebStatus以返回text / html以外的内容类型

时间:2012-01-12 08:56:40

标签: buildbot

作为构建的最后一步,我有FileUpload步骤将结果上传到master,我使用BuildBot WebStatus组件来提供构建结果(在这种情况下为.apk文件)。不幸的是,WebStatus总是返回所有文件的text / html内容类型。是否可以配置WebStatus,它将重新调整文件扩展名并根据该信息返回内容类型。

4 个答案:

答案 0 :(得分:3)

buildbot使用twisted.web.static.File来提供来自public_html目录的内容。查看源代码,默认情况下使用/etc/mime.types来获取mime类型信息。没有直接的方法可以覆盖它。

答案 1 :(得分:1)

当然它是可能的 - Buildbot完全用Python编写,所以你要做的就是在主配置文件中编辑源或子类WebStatus以覆盖适当的方法。

如果您感到好奇,请查看https://github.com/buildbot/buildbot的源代码。 Buildbot使用Twisted异步编程库。

但是,它不是WebStatus的内置功能,因此添加它涉及编写Python代码,而不仅仅是配置参数更改。

答案 2 :(得分:1)

正如其他答案所示,没有直接配置可以解决问题。但是,你可以使用一个简单的子类来改变默认的内容类型,这至少会使它默认为text / plain而不是text / html,对于它不理解的扩展名:

class WebStatusWithTextDefault(html.WebStatus):
    def setupSite(self):
        result = html.WebStatus.setupSite(self)
        self.site.resource.defaultType = "text/plain"
        return result

使用此类替换master.cfg中对html.WebStatus的引用,你应该很高兴。

答案 3 :(得分:1)

正如其他人所指出的,buildbot使用了twisted.web.static.File,它从/etc/mime.types构建了它的列表。您只需从主配置中扩展该列表,因为它只是一个静态字典。

master.cfg中的以下两行将完全相同:将apk扩展名定义为android包。您可以根据需要添加任意数量,也可以只更改现有数据。

  import twisted.web.static
  twisted.web.static.File.contentTypes['.apk'] = 'application/vnd.android.package-archive'