Можно ли настроить Buildbot WebStatus для возврата типа содержимого, отличного от text / html - PullRequest
1 голос
/ 12 января 2012

В качестве последнего шага в моих сборках у меня есть шаг FileUpload для загрузки результатов в мастер, и я использую компонент BuildBot WebStatus для обработки результатов сборки (в данном случае файлы .apk).К сожалению, WebStatus всегда возвращает текстовый / html тип содержимого для всех файлов.Можно ли настроить WebStatus так, чтобы он пересматривал расширение файла и возвращал тип контента на основе этой информации.

Ответы [ 4 ]

3 голосов
/ 05 февраля 2012

buildbot использует twisted.web.static.File для обслуживания контента из каталога public_html.Если посмотреть на источник, он по умолчанию использует /etc/mime.types для получения информации о типе mime.Нет прямого способа переопределить это.

1 голос
/ 05 февраля 2015

Как отмечали другие, buildbot использует twisted.web.static.File , который строит свой список из /etc/mime.types.Вы можете просто расширить этот список из вашей основной конфигурации, так как это просто статический запрос.

Следующие 2 строки в вашем master.cfg будут делать именно это: определять расширение apk как пакеты android.Вы можете добавить столько, сколько хотите, или просто изменить существующие.

  import twisted.web.static
  twisted.web.static.File.contentTypes['.apk'] = 'application/vnd.android.package-archive'
1 голос
/ 29 августа 2014

Как указали другие ответы, нет прямой конфигурации, которая решает проблему. Однако вы можете использовать простой подкласс, чтобы изменить тип содержимого по умолчанию, который по крайней мере сделает его по умолчанию text / plain вместо text / html для расширений, которые он не понимает:

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

Замените ссылку на html.WebStatus в вашем master.cfg этим классом, и вам должно быть хорошо идти.

1 голос
/ 12 января 2012

Конечно, это возможно - Buildbot полностью написан на Python, поэтому все, что вам нужно сделать, это либо отредактировать исходный код или подкласс WebStatus в вашем главном конфигурационном файле, чтобы переопределить соответствующие методы.

Посмотрите на исходный код на https://github.com/buildbot/buildbot, если вам интересно. Buildbot использует библиотеку асинхронного программирования Twisted.

Однако это не встроенная функция WebStatus, поэтому ее добавление будет включать в себя написание кода Python, а не просто изменение параметра конфигурации.

...