我们的一个网络应用程序部署到许多不同的服务器,供该网站的用户访问。我们使用Trac来管理错误/工作项,但我们正在寻找一种自动化发布说明的方法,以便升级服务器的用户会看到一些关于他们何时收到升级以及浏览某种方式的通知。 document - HTML或XML - 在构建时从Trac中提取所有项目。
理想情况下,我们将有一个后期构建步骤,它将从Trac中提取基于主程序集xyz版本的RSS XML,将其保存为releasenotes.xml,在部署后使用二进制文件,模板等将驻留在生产中
然后,Web服务器可以在其安装中显示它。
我的问题是我们的Trac不公开(甚至不是所有在Trac中都没有帐户的用户,否则,我们可以将它们指向Trac中的报告,他们可以自己登录阅读它们,我们不能自动化这个提取,因为它需要一个表单身份验证过程 - 我找不到一个不需要身份验证的只读RSS源。
有人解决了这个问题吗?或者我应该考虑另一种方法吗?
我目前在命令脚本中使用curl和grep。我从登录页面获取令牌,然后登录以获取身份验证cookie,然后为所需报告提取RSS。显然,这对登录表单的用户/密码/ __ FORM_TOKEN结构很敏感。
答案 0 :(得分:1)
最有可能的是,XMLRPC插件将成为您的朋友。
Trac-hacks目前处于关闭状态,因此目前还没有完整的文档,但是这里有一个简短的Python脚本可能会让你开始(处理错误和无效输入留给读者练习)。 / p>
#!/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:PassWord@trac.myserver.com/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版本的发行说明。就个人而言,我发现使用维基页面创建发行说明文档(使用宏)比解析RSS并手动执行更容易。您可以使用此输出,在其中嵌入CSS样式表,并具有HTML格式的具有吸引力的更改日志,可随时分发给用户。
请注意,除了正常的读访问权限集外,此处使用的帐户还需要XML_RPC权限。