必要な形式が示されておらず、Jenkins が何を必要としているのかはわかりませんが、XML の作成は簡単です。残念ながら、あなたが望むものは本やいくつかの記事であり、これは Stack Overflow の範囲を超えています。基本ですが…
XML ドキュメント全体のテンプレートを作成するERBなどのテンプレート システムを使用するか、 Nokogiri::Builderを使用して XML を生成するか、従来の方法で簡単な文字列補間を使用して XML を作成することができます。
syslog ファイルは通常、少なくとも最初のいくつかのフィールドについてはかなり適切に構造化されており、その後にさまざまなコマンドの出力である自由形式のテキストが続きます。Apache のログ ファイルも同様で、テキストの列の後に、自由形式ですが簡単に解析できるテキストが続きます。あちこちに宝石があり、ログを解析する方法に関するチュートリアルがあるので、検索すると何かが見つかります。アイデアは、読み取った各行を XML ノードに割り当てることができるテキストに分解したいということです。
フィールドを作成したら、それらをテンプレートに代入したり、Ruby で変数を文字列に補間したり、Builder を使用してタグ間にテキストを追加したりできます。
それほど難しくはありませんが、いくつかの小さなタスクを実行する必要があります。
次のような XML が必要な場合は、文字列補間を使用します。
<xml>
<tag1>
<tag2>some text</tag2>
<tag2>some more text</tag2>
</tag1>
</xml>
次のように作成できます。
var1 = "some text"
var2 = "some more text"
xml = %Q{
<xml>
<tag1>
<tag2>#{var1}</tag2>
<tag2>#{var2}</tag2>
</tag1>
</xml>
}
puts xml
同様に、ERB を使用する場合:
require 'erb'
var1 = "some text"
var2 = "some more text"
template = ERB.new <<-EOF
<xml>
<tag1>
<tag2><%= var1 %></tag2>
<tag2><%= var2 %></tag2>
</tag1>
</xml>
EOF
puts template.result(binding)
どの出力:
<xml>
<tag1>
<tag2>some text</tag2>
<tag2>some more text</tag2>
</tag1>
</xml>
または、Nokogiri::Builder を使用して:
require 'nokogiri'
var1 = "some text"
var2 = "some more text"
builder = Nokogiri::XML::Builder.new do |node|
node.xml {
node.tag1 {
[var1, var2].each do |t|
node.tag2(t)
end
}
}
end
puts builder.to_xml
どの出力:
<?xml version="1.0"?>
<xml>
<tag1>
<tag2>some text</tag2>
<tag2>some more text</tag2>
</tag1>
</xml>