作为构建的最后一步,我有 FileUpload 步骤将结果上传到主服务器,并且我正在使用 BuildBot WebStatus 组件来提供构建结果(在本例中为 .apk 文件)。不幸的是,WebStatus 总是为所有文件返回 text/html 内容类型。是否可以配置 WebStatus 以便它重新调整文件扩展名并根据该信息返回内容类型。
4 回答
buildbot 用于twisted.web.static.File
提供来自 public_html 目录的内容。查看源代码,默认情况下使用 /etc/mime.types 来获取 mime 类型信息。没有直接的方法可以覆盖它。
当然这是可能的——Buildbot 完全是用 Python 编写的,所以你所要做的就是在你的主配置文件中编辑源代码或子类 WebStatus 以覆盖适当的方法。
如果您好奇,请查看https://github.com/buildbot/buildbot的源代码。Buildbot 使用 Twisted 异步编程库。
但是,它不是 WebStatus 的内置功能,因此添加它需要编写 Python 代码,而不仅仅是更改配置参数。
正如其他答案所表明的那样,没有解决问题的直接配置。但是,您可以使用一个简单的子类来更改默认内容类型,这至少会使其默认为 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 的引用,你应该很高兴。
正如其他人指出的那样,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'