2014-06-29 28 views
3

我想定製webstatus模板我buildbot 0.8.8安裝 根據文檔:定製buildbot webstatus

Buildbot使用Web界面模板系統。這些模板的來源可以在buildbot的庫區的status/web/templates /目錄中找到。您可以通過在buildmaster的基本目錄內的templates /目錄中創建替代版本來覆蓋這些模板。

這裏我所做的:

  • 複製從我buildbot安裝文件夾(/usr/lib64/.../status/web/templates)所有HTML模板到模板文件夾,我發現裏面我buildmaster的安裝根目錄文件夾(模板已經在那裏了,它包含這似乎證實了文件狀態的README文件)
  • 修改root.html模板

不幸的是我在webstatus頁面看不到任何更改。

我做的另一個測試是直接更改buildbot安裝路徑中的原始模板文件。現在顯示更改。看起來buildmaster並沒有「看到」本地配置路徑中的新模板。 我檢查了文件/目錄權限,並且我無法在該端發現任何問題。

嘗試清理瀏覽器緩存但不幸運。 我做錯了什麼?

+0

我已覆蓋root.html並將其放置在{master_dir} /模板。這個對我有用 ! 但我在buildmaster配置期間複製了我修改後的root.html文件,即當我啓動buildmaster時。 – sk11

+1

@ sk11 buildbot郵件列表中的某人指出,在{master_dir}/templates中放置一個新模板文件後,需要重新啓動主模板,以便buildmaster知道新文件。不幸的是,這並不適合我。只有在系統範圍的安裝中修改模板文件時,我才能看到修改。 – sergico

+0

在模板目錄中進行更改後,爲什麼不重新啓動主站和從站? – 277roshan

回答

2

按照源代碼,模板從WebStatus對象檢索,即 builder.py:573([1]):

template = req.site.buildbot_service.templates.get_template("builders.html") 

此屬性在baseweb.py:465創建([2 ]):

self.templates = createJinjaEnv(revlink, self.changecommentlink, 
            self.repositories, self.projects, self.jinja_loaders) 

模板查找算法可以在createJinjaEnv功能可以發現,圍繞base.py:506([3]):

all_loaders = [jinja2.FileSystemLoader(os.path.join(os.getcwd(), 'templates'))] 
if jinja_loaders: 
    all_loaders.extend(jinja_loaders) 
all_loaders.append(jinja2.PackageLoader('buildbot.status.web', 'templates')) 
loader = jinja2.ChoiceLoader(all_loaders) 

按文獻[4],神社將返回第一個現有的文件中指定的列表,以便嘗試加載模板,神社將依次查找:

  • CWD
  • jinja_loaders財產,可以是在WebStatus構造函數中定義的jinja_loaders PARAM在Master.cfg中從Python包

  • 文件IMO最簡單的選擇是第二種。

    希望它能幫助

    [1] https://github.com/buildbot/buildbot/blob/2ab0e16ed0c46249f1d33308fd6878a1fc953f6e/master/buildbot/status/web/builder.py#L573 [2] https://github.com/buildbot/buildbot/blob/2ab0e16ed0c46249f1d33308fd6878a1fc953f6e/master/buildbot/status/web/baseweb.py#L465 [3] https://github.com/buildbot/buildbot/blob/2ab0e16ed0c46249f1d33308fd6878a1fc953f6e/master/buildbot/status/web/base.py#L506 [4] http://jinja.pocoo.org/docs/dev/api/#jinja2.ChoiceLoader