1

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

4

4 回答 4

3

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

于 2012-02-05T13:48:41.740 回答
1

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

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

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

于 2012-01-12T09:00:15.723 回答
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 的引用,你应该很高兴。

于 2014-08-29T16:34:28.460 回答
1

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

您的以下 2master.cfg行将完全做到这一点:将 apk 扩展定义为 android 包。您可以根据需要添加任意数量,或者只是更改现有的。

  import twisted.web.static
  twisted.web.static.File.contentTypes['.apk'] = 'application/vnd.android.package-archive'
于 2015-02-05T18:16:29.653 回答