ビルドの最後のステップとして、結果をマスターにアップロードする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 コードを記述する必要があります。
他の人が指摘したように、buildbot は、/etc/mime.typesからリストを作成するtwisted.web.static.Fileを使用します。このリストは単なる静的辞書であるため、マスター構成から簡単に拡張できます。
あなたの次の 2 行master.cfg
はまさにそれを行います: apk 拡張子を android パッケージとして定義します。必要な数だけ追加することも、既存のものを単に変更することもできます。
import twisted.web.static
twisted.web.static.File.contentTypes['.apk'] = 'application/vnd.android.package-archive'
他の回答が示しているように、問題を解決する直接的な構成はありません。ただし、単純なサブクラスを使用してデフォルトのコンテンツ タイプを変更できます。これにより、少なくともデフォルトで、理解できない拡張機能の text/html ではなく text/plain になります。
class WebStatusWithTextDefault(html.WebStatus):
def setupSite(self):
result = html.WebStatus.setupSite(self)
self.site.resource.defaultType = "text/plain"
return result
master.cfg の html.WebStatus への参照をこのクラスに置き換えれば、準備完了です。