2012-08-09 68 views
3

我們的一個網絡應用程序被部署到許多不同的服務器上供用戶在該站點訪問。我們使用Trac管理缺陷/工作項目,但我們正在尋找一種自動化發行說明的方法,以便升級服務器的用戶可以看到有關他們何時收到升級的通知以及瀏覽某種文檔 - HTML或XML - 它是在構建時從Trac中提取的所有項目。從Trac自動生成發行說明

理想情況下,我們會有一個構建後步驟,從Trac中提取基於xyz版本的RSS XML,從主程序集中保存爲releasenotes.xml,其中包含二進制文件,模板等部署後將駐留在生產。

然後,Web服務器可以在其安裝中顯示它。

我的問題是我們的Trac沒有公開(甚至沒有Trac帳戶的所有這些用戶,否則,我們可以將他們指向Trac中的報告,他們可以以自己的身份登錄進行閱讀)而且我們不能自動執行此提取操作,因爲它需要表單身份驗證過程 - 我無法找到不需要身份驗證的只讀RSS提要。

任何人都解決了這個問題?或者我應該考慮另一種方法?

我目前正在使用curl和grep命令腳本。我從登錄頁面獲取令牌,然後登錄以獲取身份驗證Cookie,然後爲所需報告提取RSS。顯然,這對登錄表單的用戶/密碼/ __ FORM_TOKEN結構很敏感。

+0

你能澄清你的意思與trac不公開嗎?這是否意味着你的buildserver無法連接你的trac? – wimh 2012-08-13 21:11:41

+0

@wimmel它需要使用Trac的表單系統進行密碼驗證。 – 2012-08-13 21:18:17

+0

您可以在Trac中創建一個可用於發行說明的帳戶嗎? – 2012-08-14 01:50:15

回答

1

很可能,XMLRPC插件將成爲您的朋友。

Trac-hacks現在處於關閉狀態,因此完整的文檔目前不可用,但這裏有一個簡短的Python腳本,可能會使您開始(處理錯誤和無效輸入作爲練習讀者)。

#!/usr/bin/python 
# Fetch a Trac page via RPC 
# Usage: fetchpage.py <wiki page name> <output file> 

import sys 
from xmlrpclib import ServerProxy 

# Extract info from CLI args 
page_title = sys.argv[1] 
output_filename = sys.argv[2] 

# Authenticate with Trac and fetch the specified wiki page 
p = ServerProxy('http://UserName:[email protected]/login/rpc') 
page = p.wiki.getPageHTML(page_title) 

# Write page to file 
with open(output_filename,'w') as outfile: 
    outfile.write(page) 

與「./fetchpage.py 'ReleaseNotes/x.y.z' changelog.html」執行腳本後,文件changelog.html將包含指定的wiki頁面,預渲染成HTML的內容。不包括工具欄和頁眉/頁腳。

這假定您有一個名爲ReleaseNotes/x.y.z的wiki頁面,其中包含x.y.z發行版的發行說明。就我個人而言,我發現使用wiki頁面創建發行說明文檔(使用宏)更容易,而不是解析RSS並手動完成。你可以使用這個輸出,在其中嵌入一個CSS樣式表,並且準備好分發給用戶的HTML格式有一個看起來很吸引人的更新日誌。

請注意,此處使用的帳戶除了用於讀取訪問的普通權限集之外,還需要XML_RPC權限。

+0

http://stackoverflow.com/questions/7689637/is-it-possible-to-generate-a-changelog-automatically-from-trac – gavenkoa 2014-05-31 21:28:29