3

私たちの Web アプリの 1 つは、そのサイトのユーザーがアクセスできるように、多数の異なるサーバーにデプロイされています。私たちは Trac を使用してバグ/作業項目を管理していますが、リリース ノートを自動化して、サーバーがアップグレードされたユーザーがいつアップグレードを受け取ったかについての小さな通知を確認できるようにする方法を探しています。ドキュメント - HTML または XML - ビルド時にすべてのアイテムとともに Trac から抽出されたもの。

理想的には、メイン アセンブリからバージョン xyz に基づいて RSS XML を Trac から抽出し、それを releasenotes.xml として保存するビルド後の手順を用意します。これは、バイナリ、テンプレートなどと共に展開した後、運用環境に存在します。

その後、Web サーバーはそのインストール内でそれを表示できます。

私の問題は、私たちのTracが公開されていないことです (Trac にアカウントを持っていないこれらすべてのユーザーに対してでさえありません。そうでなければ、Trac のレポートにそれらを向けることができ、彼らは自分自身としてログインしてそれらを読むことができます)。フォーム認証プロセスが必要なため、この抽出を自動化できません。認証を必要としない読み取り専用の RSS フィードが見つかりません。

誰でもその問題を解決できますか?または、私が考慮すべき別のアプローチはありますか?

現在、コマンドスクリプトでcurlとgrepを使用しています。ログイン ページからトークンを取得し、ログインして認証 Cookie を取得し、必要なレポートの RSS をプルします。明らかに、これはログイン フォームの user/password/__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)

" " を指定してスクリプトを実行すると、指定された Wiki ページのコンテンツが./fetchpage.py 'ReleaseNotes/x.y.z' changelog.htmlファイルchangelog.htmlに含まれ、HTML に事前にレンダリングされます。ツールバーとページ ヘッダー/フッターは含まれません。

ReleaseNotes/x.y.zこれは、xyz リリースのリリース ノートを含むという名前の wiki ページがあることを前提としています。個人的には、wiki ページを使用して (マクロを使用して) リリース ノート ドキュメントを作成する方が、RSS を解析して手動で作成するよりも簡単であることがわかりました。この出力を取得して CSS スタイルシートを埋め込むと、見栄えの良い変更ログが HTML 形式で作成され、ユーザーに配布する準備が整います。

ここで使用されるアカウントには、読み取りアクセスの通常のアクセス許可セットに加えて、XML_RPC アクセス許可が必要になることに注意してください。

于 2012-08-14T23:30:02.743 に答える