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