3

我们的一个网络应用程序部署到多个不同的服务器上,供该站点的用户访问。我们使用 Trac 来管理错误/工作项,但我们正在寻找一种方法来自动化发布说明,以便服务器升级的用户会看到关于他们何时收到升级的一点通知,以及浏览某种文档 - HTML 或 XML - 在构建时从 Trac 中提取,包含所有项目。

理想情况下,我们将有一个构建后步骤,该步骤将根据主程序集中的 xyz 版本从 Trac 提取 RSS XML,将其保存为 releasenotes.xml,在部署二进制文件、模板等后将驻留在生产环境中。

然后,Web 服务器可以在其安装中显示它。

我的问题是我们的Trac不是公开的(甚至对所有这些在 Trac 中没有帐户的用户也不公开,否则,我们可以将他们指向 Trac 中的报告,他们可以以自己的身份登录以阅读它们),我们可以' t 自动提取此提取,因为它需要表单身份验证过程 - 我找不到不需要身份验证的只读 RSS 提要。

有人解决这个问题吗?还是我应该考虑另一种方法?

我目前在命令脚本中使用 curl 和 grep。我从登录页面获取令牌,然后登录以获取身份验证 cookie,然后提取 RSS 以获得所需的报告。显然这对登录表单的用户/密码/__FORM_TOKEN 结构很敏感。

4

1 回答 1

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: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。工具栏和页眉/页脚不包括在内。

这假定您有一个名为的 wiki 页面ReleaseNotes/x.y.z,其中包含 xyz 版本的发行说明。就个人而言,我发现使用 wiki 页面创建发行说明文档(使用宏)比解析 RSS 并手动执行要容易。您可以获取此输出,将 CSS 样式表嵌入其中,并以 HTML 格式制作具有吸引力的更改日志,并准备好分发给用户。

请注意,此处使用的帐户除了读取访问权限的正常权限集外,还需要 XML_RPC 权限。

于 2012-08-14T23:30:02.743 回答